Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
為什麼我無法產生 Amazon S3 庫存清單報告?
我設定了 Amazon Simple Storage Service (Amazon S3) 庫存清單報告,但它並未交付,並且我收到了「Access Denied」(存取遭拒) 錯誤。
簡短說明
您會收到以下錯誤訊息:
「由於 S3 無法存取目的地儲存貯體或 KMS 金鑰,存取遭拒,2021-02-19 的庫存清單匯出失敗請要求目的地儲存貯體或 KMS 金鑰的擁有者授予必要的存取權,然後再試一次。」
若要產生 Amazon S3 庫存清單報告並避免上述錯誤訊息,您必須滿足以下要求:
- 允許來源儲存貯體將 Amazon S3 庫存清單報告上傳到目的地儲存貯體。
- 將目的地儲存貯體和來源儲存貯體保留在您設定 Amazon S3 庫存清單的同一 AWS 區域中。
- 授予 Amazon S3 存取用於加密庫存清單報告檔案的 AWS Key Management Service (KMS) 金鑰的權限。
注意: Amazon S3 可能需要最多 48 小時才能提供第一份庫存清單報告。
解決方法
允許來源儲存貯體將 Amazon S3 庫存清單報告上傳到目的地儲存貯體
確認您的儲存貯體政策允許來源儲存貯體上傳到目的地儲存貯體。
包含 PutObject 動作的儲存貯體政策範例:
{ "Version": "2012-10-17", "Id": "S3PolicyId", "Statement": [ { "Sid": "InventoryAndAnalyticsExamplePolicy", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::destinationbucket/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::sourcebucket" }, "StringEquals": { "aws:SourceAccount": "123456789012", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
從每個可能影響 PutObject 動作的 Deny 陳述式中排除 s3.amazonaws.com。明確的拒絕會優先於允許陳述式。
以下範例儲存貯體政策拒絕存取 s3.amazonaws.com,並且僅允許存取指定的 IP 位址範圍:
{ "Version": "2012-10-17", "Id": "S3PolicyId", "Statement": [ { "Sid": "IPAllow", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::destinationbucket", "arn:aws:s3:::destinationbucket/*" ], "Condition": { "NotIpAddress": { "aws:SourceIp": "54.240.143.0/24" } } } ] }
以下是上述儲存貯體政策的更新版本,允許對 s3.amazonaws.com 的存取:
{ "Version": "2012-10-17", "Id": "S3PolicyId", "Statement": [ { "Sid": "IPAllow", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::destinationbucket", "arn:aws:s3:::destinationbucket/*" ], "Condition": { "NotIpAddress": { "aws:SourceIp": "54.240.143.0/24" }, "ArnNotLike": { "aws:SourceArn": "arn:aws:s3:::sourcebucket" } }, "Principal": "*" }, { "Sid": "InventoryAndAnalyticsExamplePolicy", "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::destinationbucket/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::sourcebucket" }, "StringEquals": { "aws:SourceAccount": "123456789012", "s3:x-amz-acl": "bucket-owner-full-control" } }, "Principal": { "AWS": [ "s3.amazonaws.com" ] } } ] }
確認目的地儲存貯體與來源儲存貯體位於相同區域
開啟 Amazon S3 主控台。導覽至您的儲存貯體清單,然後檢查「區域」欄,以確定您的目的地儲存貯體和來源儲存貯體是否位於相同區域。
如果您的來源儲存貯體和目的地儲存貯體位於不同的區域,請建立或選擇一個新儲存貯體。
注意: 在您移轉物件之前,屬於該儲存貯體的物件將保留在您建立該儲存貯體的區域中。如需詳細資訊,請參閱儲存貯體概覽。
授予存取用於加密庫存清單報告檔案的 AWS KMS key 的權限
如果您使用 AWS KMS key 加密了 Amazon S3 儲存貯體,則授予 Amazon S3 存取您的 AWS KMS key 的權限。
請完成下列步驟:
-
開啟 AWS KMS 主控台。
注意: 使用擁有 AWS KMS key 的 AWS 帳戶登入。 -
從導覽窗格選擇 Customer managed keys (客戶受管金鑰)。
-
在 Customer managed keys (客戶自管金鑰) 下,選擇用於加密庫存清單報告檔案的 AWS KMS key。
-
在 Key policy (金鑰政策) 下,選擇 Switch to policy view (切換為政策檢視)。
-
選擇 Edit (編輯)。
-
在 Edit key policy (編輯金鑰政策) 下,將下列金鑰政策新增至現有金鑰政策:
{ "Sid": "Allow Amazon S3 use of the KMS key", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "source-account-id" }, "ArnLike": { "aws:SourceARN": "arn:aws:s3:::source-bucket-name" } } }
-
選擇 Save changes (儲存變更)。
注意: 檢查 Amazon S3 主控台中 Inventory configurations (庫存清單組態) 下的 Last export (上次匯出) 欄。空的上次匯出欄可能表示 Amazon S3 未提供庫存清單報告。如果 Amazon S3 提供了庫存清單報告,那麼您可以在目的地儲存貯體中的指定路徑中,找到庫存清單報告。
查看伺服器存取日誌和 CloudTrail 歷史記錄
檢查您的伺服器存取日誌,以確定是否對儲存貯體政策進行了更動,導致報告未能交付。有關日誌格式的範例,請參閱 Amazon S3 伺服器存取日誌格式。
以下日誌項目範例顯示對儲存貯體政策進行了變更:
REST.PUT.BUCKETPOLICY
您也可以在 AWS CloudTrail 事件歷史記錄中搜尋 PutBucketPolicy API 動作。如果 PutBucketPolicy 動作是在 90 天前執行的,則必須查詢 Amazon S3 中的 CloudTrail 日誌。如需詳細資訊,請參閱 AWS Docs GitHub 網站上 CloudTrail 中的 Amazon S3 資訊。
檢查庫存清單範圍的前綴篩選器
如果您設定了前綴篩選器,但 48 小時後仍未收到庫存清單報告,請檢查您的前綴組態。請確定前綴篩選器與庫存儲存貯體中的現有前綴相符。移除空格、拼字錯誤和前導斜線。
相關資訊

相關內容
- 已提問 1 年前lg...
- 已提問 2 年前lg...