[英]Amazon S3 + CloudFront query for specific version of stored file
我創建了一個新的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>
任何幫助都感激不盡。
您需要設置正確的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."
}]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.