我已上傳該物件并將其標記為我的存盤桶下的公開物件。當我點擊時,Object URL我可以在瀏覽器上看到它(可公開訪問)。
然后我在 s3 存盤桶級別啟用了版本控制,然后我更改了物件中的內容并將其再次上傳到同一個存盤桶。版本控制效果很好,我可以看到同一個物件的兩個不同版本。但是,公共訪問沒有。當我點擊新的時Object's URL,它說訪問被拒絕。
這種行為背后的任何具體原因,或者這是來自 S3 的已知問題,或者我正在做一些不符合標準做法的事情?
uj5u.com熱心網友回復:
每個物件版本都有自己的權限。因此,第一個版本可以公開訪問,您可以從瀏覽器中獲取。但是對于較新的物件版本,如果未將其配置為公共,則公共訪問將不起作用。
從檔案:
Amazon S3 中物件的權限是在版本級別設定的。每個版本都有自己的物件所有者。創建物件版本的 AWS 賬戶是所有者。因此,您可以為同一物件的不同版本設定不同的權限。為此,您必須在 PUT Object versionId acl 請求中指定要設定其權限的物件的版本 ID。
uj5u.com熱心網友回復:
如果您啟用了版本控制并且想要查看存盤桶中檔案的特定版本,則必須GetObjectVersion在存盤桶策略中添加權限。存盤桶策略應如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
如果公共 URL 包含versionId查詢引數,則此策略將允許打開存盤桶中的檔案:
https://my-bucket-123456789.s3.amazonaws.com/file3.json?versionId=RXbjBh8SzW9RpEsxX.xzkYb1RTK4pjwF
如果您versionId的公共 URL 中沒有,它應該可以作業,即使您沒有GetObjectVersion向策略添加權限。在這種情況下,它將打開最新版本。
請注意,此答案假定存盤桶未啟用訪問控制串列 (ACL) 并期望每個物件的所有權設定為Bucket owner enforced。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/403118.html
標籤:
