我正在将 Amazon API 网关配置为 S3 存储桶的代理。理想情况下,我希望客户端能够将文件发布到存储桶,让 S3 为其分配文件名,然后在响应中返回该名称。我不想让客户端能够指定文件名。这可能吗?设置代理的文档根本没有提到 POST,我发现的其他 POST 示例仍然需要客户端指定密钥名称。
否,S3 不支持自动生成文件名。
S3 无法分配名称,但在 API 网关映射模板中,您可以使用 $context 对象中的任何数据来构造名称。
例如,$context.requestId 将为您的 S3 密钥创建一个唯一的密钥名称。
如果您通过 Lambda,您可以插入所需的任何自定义逻辑,当然包括生成文件名。然后,Lambda 函数可以返回文件名,您可以将其映射到 API 网关响应。