具有动态文件名/密钥的PUT的预设S3 URL以

时间:2017-02-07 01:53:08

标签: amazon-web-services amazon-s3 aws-sdk

是否可以使用预先签名的key-starts-with策略PUT到S3以允许上传多个或任意命名的文件?

使用基于浏览器的PresignedPost技术很容易,但是我一直无法找到一种方法来使用普通的简单PUT来上传以相同密钥开头的任意文件。

1 个答案:

答案 0 :(得分:1)

这不可能......不是直接的。

BLAS_INCLUDE := /usr/local/Cellar/openblas/0.2.18_2/include BLAS_LIB := /usr/local/Cellar/openblas/0.2.18_2/lib 上传在支持嵌入式策略文档方面是独一无二的,它允许像开始一样的逻辑。

POST和所有其他请求都要求签名与请求精确匹配,因为签名完全来自请求本身的可观察属性。

一种可能的解决方法是将存储桶连接到CloudFront,并使用具有相应通配符的CloudFront预签名URL。在验证CloudFront URL之后,CloudFront原始访问标识实际上会在前往S3的路径中处理对请求的签名,以匹配确切的请求。在存储桶策略中为原始访问标识赋予PUT权限,然后应允许该操作。

我建议这应该可行,但我还没有尝试过,因为CloudFront文档表明客户端需要将s3:PutObject标头添加到x-amz-content-sha256请求,以便与所有S3区域完全兼容。同一页面警告您分配给原始访问标识的任何权限都将起作用(例如PUT),因此,设置存储桶策略过于宽松将允许通过签名URL执行任何操作 - CloudFront签名URL不要限制特定的REST动词。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html

请注意,没有上传" to"等概念。 CloudFront的。上传到通过 CloudFront到原始服务器,在这种情况下为S3。