【问题标题】:Can an S3 bucket generate its own object key names?S3 存储桶可以生成自己的对象键名吗?
【发布时间】:2016-06-06 18:09:31
【问题描述】:

我将 Amazon API Gateway 配置为 S3 存储桶的代理。理想情况下,我希望客户端能够将文件发布到存储桶,让 S3 为其分配文件名,然后在响应中返回该名称。我不想让客户能够指定文件名。这可能吗?设置代理的文档根本没有提到 POST,我发现的其他 POST 示例仍然需要客户端指定密钥名称。

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-api-gateway


    【解决方案1】:

    不,S3 不支持自动生成文件名。

    【讨论】:

      【解决方案2】:

      S3 无法分配名称,但在 API 网关映射模板中,您可以使用 $context 对象中的任何数据来构造名称。

      例如$context.requestId 将为您的 S3 密钥创建一个唯一的密钥名称。

      【讨论】:

      • 这是一个有趣的想法。请求 ID 有多大?它可能在很长一段时间内都是独一无二的吗?
      【解决方案3】:

      如果您使用 Lambda,您可以插入任何您想要的自定义逻辑,当然包括生成文件名。然后 Lambda 函数可以通过返回文件名,您可以将其映射到您的 API Gateway 响应。

      【讨论】:

      • 这不适用于这种情况,因为 Ishka 只使用 AWS 网关作为代理。
      • 我考虑过这个,但是 Lambda 中的请求大小有 6 MB 的限制,我希望能够上传比这更大的文件。
      猜你喜欢
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 2013-03-15
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      相关资源
      最近更新 更多