Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
為何我的 Amazon S3 批次複寫作業會失敗?
我想找出為什麼 Amazon Simple Storage Service (Amazon S3) 批次複寫作業失敗的原因。
簡短描述
批次複寫可能會因權限、政策或作業組態問題而失敗。
為了避免大量操作失敗,Amazon S3 在每個 Batch Operations 作業上設定了任務失敗閾值。在作業執行至少 1,000 個任務後,Amazon S3 會監控任務失敗率。如果某項作業的失敗率超過 50%,則該作業會失敗。使用以下疑難排解來確定並解決問題。然後重新提交作業。
解決方法
批次角色權限
授予批次角色以下權限:
- 提供資訊清單或組態 PUT 權限。
- 使用儲存資訊清單的儲存貯體為資訊清單提供 GET 權限。
- 如果您使用自己的資訊清單,請授予批次角色存取該資訊清單的權限。
- 授予 s3:CreateJob 權限以建立批次作業。
- 如果您套用作業標籤選項,則還需授予 s3:PutJobTagging 權限。
**注意:**若要儲存批次操作,批次角色必須具有清單檔案的 GET 和 PUT 權限。欲了解更多資訊,請參閱為 S3 批次複寫設定 AWS Identity and Access Management (IAM) 角色。
複寫角色權限
當批次作業的失敗率超過 50% 時,可能是複寫角色組態有問題。
設定複寫角色時,請使用以下設定:
- 如果您在批次和複寫作業使用相同的角色,則授予 Amazon S3 和 Amazon S3 Batch Operations 權限來承擔該角色。
- 包括複寫所需的最低權限。欲了解更多資訊,請參閱為什麼我在設定儲存貯體之間的複寫時,Amazon S3 物件無法複寫?
- 授予額外權限,以支援 AWS Key Management Service (AWS KMS)、儲存貯體金鑰、物件擁有權變更和刪除標記的複寫。
- 封鎖公開存取設定。
- 請檢查可能附加到 IAM 角色的權限邊界,因為這些邊界可能會導致複寫失敗。
來源和目的地儲存貯體政策
使用以下儲存貯體政策設定:
- 如果目的地儲存貯體位於另一個 AWS 帳戶中,則在儲存貯體的來源複寫規則中,授予複寫角色複寫物件的權限。這些權限是 IAM 角色政策的補充。此外,請勿將目的地儲存貯體設定為「請求者付款」。
- 預設情況下,來源儲存貯體擁有者無法存取其他帳戶所建立的物件。複寫組態只會複寫來源儲存貯體擁有者可以存取的物件。若要解決此問題,您可以選擇停用物件擁有權控制中的存取控制清單 (ACL),或是將物件的擁有權變更為來源帳戶。
- 如果您將批次作業的資訊清單儲存在跨帳戶儲存貯體中,請允許儲存貯體帳戶存取該資訊清單。將權限新增至批次角色的儲存貯體政策。
加密物件的 AWS KMS 權限
對加密物件使用以下 AWS KMS 設定:
- 如果您對資訊清單和報告儲存貯體使用 AWS KMS 或物件層級加密,請將批次角色加入金鑰中。AWS KMS key 必須允許批次角色從儲存貯體下載和上傳資料。
- 如果複寫包含加密的來源儲存貯體或目的地儲存貯體,請允許使用 AWS KMS key 存取複寫角色和批次角色。授予批次角色下載清單的權限。
- 如果您根據加密上下文授予權限,則請包含基於儲存貯體金鑰組態的 ARN。請參閱為什麼我在設定儲存貯體之間的複寫時,Amazon S3 物件無法複寫?
- 使用 AWS KMS 加密的 Amazon S3 庫存清單報告。Amazon S3 不支援手動為批次操作產生 AWS KMS 加密資訊清單檔案。
明確拒絕陳述式
如果儲存貯體政策的拒絕陳述式是根據網路限制動作,則 Amazon S3 將無法執行複寫。您的 Amazon S3 複寫不會使用您為私有存取設定的虛擬私有雲端 (VPC) 端點或 Amazon S3 Access Points。
若要解除限制,請執行以下動作:
- 請設定資訊清單的儲存貯體政策,使其不拒絕批次角色所需的任何動作。
- 如果您在建立 S3 批次作業時使用私有存取,則授予 VPC 端點建立批次作業的權限。
- 確認您沒有在 IAM、AWS Organizations 服務控制政策 (SCP)、儲存貯體政策或 AWS KMS 政策中拒絕所需的複寫權限。
批次複寫作業組態錯誤
組態問題可能導致以下錯誤回應。
資訊清單產生時未找到符合篩選條件的金鑰
請勿在資訊清單中加入 Amazon S3 Glacier 或 Amazon S3 Glacier Deep Archive 中的物件,因為複寫操作找不到這些物件。
如果批次複寫作業中複寫規則的首碼篩選器或篩選條件與儲存貯體中的首碼不相符,請還原物件。還原物件後,請再次執行複寫。
SrcGetObjectNotPermitted 或 SrcHeadObjectNotPermitted
當您在複寫規則中設定的 IAM 角色沒有存取物件的權限時,您會收到 SrcGetObjectNotPermitted 或 SrcHeadObjectNotPermitted 錯誤。當 IAM 角色無法從來源儲存貯體中擷取物件中繼資料時,您也會收到其中一個錯誤。若要解決這些問題,請在 IAM 角色政策中新增 s3:GetObjectVersionForReplication 權限。
欲了解更多資訊,請參閱設定建立複寫規則的權限。
DstPutObjectNotPermitted
當您收到 DstObjectNotPermitted 錯誤時,表示 Amazon S3 無法將物件複寫到目的地儲存貯體。若要解決此問題,請在 IAM 角色政策和目的地 S3 儲存貯體政策中授予 s3:ReplicateObject 或 s3:ObjectOwnerOverrideToBucketOwner 權限。
批次作業已成功執行,但目的地儲存貯體中預期的物件數量不一致
當資訊清單和篩選器中列出的物件不符時,就會發生此錯誤。若要解決此問題,請修正您在建立作業時選擇的篩選條件或複寫規則設定中的拼寫錯誤。
400 InvalidRequest: Task failed due to missing VersionId
當作業遇到資訊清單中版本 ID 欄位為空的物件時,就會發生此錯誤。若要解決此問題,請將空白版本 ID 轉換為 Null 字串。
失敗的原因。無法將作業報告寫入您的報告儲存貯體。請檢查您的權限。
Amazon S3 不支援對您指定用於儲存批次完成報告的儲存貯體進行物件鎖定。請改將報告儲存在沒有物件鎖定的 S3 儲存貯體中。
跳過的物件沒有出現錯誤訊息
Amazon S3 不會複寫來源儲存貯體中來自另一個複寫組態複本的物件。
此外,Amazon S3 不會將物件複寫到同一個已成功完成複寫的目的地儲存貯體。Amazon S3 會跳過該物件,且不會顯示錯誤訊息。
監控
批次複寫作業完成後,Amazon S3 會在您指定的目的地儲存貯體或首碼中產生一份批次完成報告。此報告提供詳細資訊,包括失敗項目及其相關的錯誤訊息。請查看批次完成報告,以確定複寫過程中失敗的物件或操作,及其相關的錯誤或失敗原因。
使用 Amazon S3 事件通知,在物件未複寫到其目的地 AWS 區域時通知您。
注意:準備 Amazon S3 的資訊清單需要一些時間。但是,如果您的批次作業停留在準備中階段,或是在相同的完成百分比狀態下維持了好幾個小時,請聯絡 AWS Support。
