3

我想使用 S3 CORS 和密钥过期来创建一个“假脱机桶”。此线轴桶应支持以下内容:

  • 前端代码(比如 jQuery)应该能够HTTP PUT任意命名存储桶的键
  • 给定键名,后端代码(例如 Python/boto)应该能够读取和删除这些键
  • 密钥应在 X 天后自行过期

这究竟应该如何实现?

4

1 回答 1

4

经过一番折腾,这就是我发现的:

  • 创建存储桶
  • 为每个人提供上传/删除编辑权限(使用 API 应该很容易,我的情况使用控制台更容易)。
  • 设置以下(或类似的)CORS策略:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*.example.com</AllowedOrigin>
        <AllowedMethod>PUT</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
  • 设置对象生命周期策略以符合您的意愿(再次,使用 API 很容易,在我的情况下使用控制台更容易)
  • 执行 PUT 时,添加 header x-amz-acl: bucket-owner-full-control。例如,在 CoffeeScript 和 jQuery 中,您的 PUT 将如下所示:
$.ajax http://my_spool_bucket.s3.amazonaws.com,
    type: "PUT"
    data: "contents of new object"
    headers:
        "x-amz-acl": "bucket-owner-full-control"

而已。沉浸在高可用、自删除、兼容 CORS、便宜且简单的 HTTP 假脱机空间的荣耀中。要记住的一件重要事情:任何客户端都可以覆盖任何密钥;您应该进行相应的设计(我使用加密安全生成的密钥)。

于 2013-01-10T16:35:14.953 回答