Dan*_*nny 2 amazon amazon-s3 amazon-web-services amazon-cloudfront
我创建了一个带有版本控制功能的新S3 Bucket,并在我的cloudfront发行版上打开了"转发查询字符串".
我知道您可以通过将versionId作为查询字符串发送来访问不同的对象版本.
这如何与云端和签名网址一起使用?
如果我想返回文件的特定版本,是否必须使用附加的查询字符串对URL进行签名,例如:
http://example.cloudfront.net/files/file.pdf?verisonId=[id]
好吧,我尝试与versionId一起签署网址 - 它没有用.仅对URL进行签名,然后附加versionId会给出拒绝访问的响应.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>89F25EB47DDA64D5</RequestId>
<HostId>Z2xAduhEswbdBqTB/cgCggm/jVG24dPZjy1GScs9ak0w95rF4I0SnDnJrUKHHQC</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)
任何帮助都感激不尽.
您需要设置正确的ACL以允许CloudFront规范ID访问版本化对象,或者您需要设置允许操作"s3:GetObjectVersion"的存储桶策略.您可能只有GetObject,它允许您通过CloudFront检索普通对象,但不能检索?versionId = <>对象.
添加类似于的存储桶策略:
{
"Version":"2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [{
"Action": ["s3:GetObject", "s3:GetObjectVersion" ],
"Effect": "Allow",
"Principal":{"CanonicalUser":"<CLOUDFRONT CANONICAL ID>"},
"Resource": "<BUCKET RESOURCE IDENTIFIER>",
"Sid": "Grant a CloudFront Origin Identity access to support private content and versioned content."
}]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |