使用不带签名URL的CloudFront / S3设置内容处置

时间:2019-04-18 15:38:40

标签: amazon-s3 amazon-cloudfront

我具有公共读取访问权限的对象被限制为只能通过CloudFront提供。当我尝试将response-content-disposition参数传递到CloudFront URL时,出现S3错误:

Request specific response headers cannot be used for anonymous GET requests.

我读到,除非您使用签名URL,否则S3不允许您设置内容处置,但这不是一个选择。由于CloudFront请求使用存储桶策略进行身份验证,因此不应将其视为匿名请求。有什么方法可以将其配置为正常工作吗?

如何在不使用签名URL的情况下设置内容处置?

1 个答案:

答案 0 :(得分:1)

匿名请求不支持诸如response-content-disposition之类的请求选项,因此该错误表明S3没有看到任何身份验证信息。

为了使CloudFront能够以S3来源进行身份验证,必须将Restrict Bucket Access来源设置设置为Yes

该选项的名称很差,因为该选项实际上并没有做任何限制访问存储桶的操作。应该将其称为“发送至存储桶时对请求进行身份验证”之类的名称,因为该选项实际上启用了此功能-使用原始访问身份(OAI)来验证发送至存储桶的请求。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#private-content-creating-oai-console

请注意,您的设置允许匿名传递请求的事实可能意味着您的存储桶策略或对象ACL的限制不够。