本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
故障排除複寫
本節列出「Amazon S3 複寫」的疑難排解提示,以及「S3 批次複寫」錯誤的相關資訊。
S3 複寫的疑難排解提示
在您設定複寫之後,如果物件複本未出現在目的地儲存貯體中,請使用這些故障診斷技巧以識別並修正問題。
-
大部分的物件會在 15 分鐘內複寫。Amazon S3 複寫物件所需的時間長短取決於幾個因素,包括來源和目的地區域對,以及物件的大小。若是大型物件,最長可能需要數小時的複寫時間。若要查看複寫時間,您可以使用 S3 複寫時間控制 (S3RTC)。
如果要複寫的物件很大,請等待一段時間,然後查看其是否出現在目的地中。您也可以檢查來源物件的複寫狀態。如果物件複寫狀態為
PENDING
,Amazon S3 尚未完成複寫。如果物件複寫狀態為FAILED
,請檢查來源儲存貯體中所設的複寫組態。此外,若要在複寫期間接收失敗的相關資訊,您可以設定「Amazon S3 事件通知」複寫以接收失敗事件。如需詳細資訊,請參閱使用 Amazon S3 事件通知接收複寫失敗事件。
-
若要檢查物件的複寫狀態,您可以呼叫
HeadObject
API操作。HeadObject
API 操作會傳回物件的COMPLETED
、PENDING
或FAILED
複寫狀態。在回應HeadObject
API呼叫時,複寫狀態會傳回在x-amz-replication-status
標頭中。注意
若要執行
HeadObject
,您必須對您正要請求的儲存貯體具有讀取權。HEAD
請求具有與GET
請求相同的選項,而不需執行GET
操作。例如,若要使用 AWS Command Line Interface (AWS CLI) 執行HeadObject
請求,您可以執行下列命令。以您自己的資訊取代
。user input placeholders
aws s3api head-object --bucket
amzn-s3-demo-source-bucket
--keyindex.html
-
如果
HeadObject
傳回具有FAILED
複寫狀態的物件,您可以使用 S3 批次複寫來複寫這些失敗的物件。如需詳細資訊,請參閱使用批次複寫複寫來複寫現有物件。或者,您也可以將失敗的物件重新上傳至來源儲存貯體,這樣會啟動新物件的複寫。 -
在來源儲存貯體中的複寫組態中,驗證下列項目:
-
目的地儲存貯體的 Amazon Resource Name (ARN) 正確。
-
金鑰名稱前綴正確。例如,如果您設定組態來複寫具有前綴
Tax
的物件,則只會複寫具有Tax/document1
或Tax/document2
等金鑰名稱的物件。不會複寫具有金鑰名稱document3
的物件。 -
複寫規則的狀態為
Enabled
。
-
-
確認複寫組態中的任何儲存貯體上尚未暫停版本控制。來源與目的地儲存貯體都必須啟用版本控制。
-
如果複寫規則設定為將物件擁有權變更為目的地儲存貯體擁有者 ,則用於複寫的 AWS Identity and Access Management (IAM) 角色必須具有
s3:ObjectOwnerOverrideToBucketOwner
許可。此許可是在資源 (在此情況下,指的是目的地儲存貯體) 上授予。例如,下列Resource
陳述式說明如何在目的地儲存貯體上授予此許可:{ "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" } -
如果目的地儲存貯體是由另一個帳戶所擁有,則目的地儲存貯體的擁有者也須透過目的地儲存貯體政策,將
s3:ObjectOwnerOverrideToBucketOwner
許可授予來源儲存貯體擁有者。若要使用下列儲存貯體政策範例,請以您自己的資訊取代
:user input placeholders
{ "Version": "2012-10-17", "Id": "Policy1644945280205", "Statement": [ { "Sid": "Stmt1644945277847", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789101
:role/s3-replication-role
" }, "Action": [ "s3:ReplicateObject", "s3:ReplicateTags", "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" } ] }注意
如果目的地儲存貯體的物件擁有權設定包含儲存貯體擁有者強制執行,則您不需要在複寫規則中更新設定,以將物件擁有權變更為目的地儲存貯體擁有者。依預設,物件擁有權變更將會發生。如需變更複本擁有權的詳細資訊,請參閱變更複本擁有者。
-
如果您在跨帳戶案例中設定複寫組態,其中來源和目的地儲存貯體由不同的 擁有 AWS 帳戶,則無法將目的地儲存貯體設定為請求者付款儲存貯體。如需詳細資訊,請參閱使用儲存體傳輸和用量的申請者付款儲存貯體。
-
如果儲存貯體的來源物件是使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 加密,則必須將複寫規則設定為包含 AWS KMS加密的物件。請務必在 Amazon S3 主控台的加密設定下選取複寫使用 AWS KMS加密的物件。然後,選取用於加密目的地物件的 AWS KMS 金鑰。
注意
如果目的地儲存貯體位於不同的帳戶中,請指定目的地帳戶擁有 AWS KMS 的客戶受管金鑰。請勿使用預設的 Amazon S3 受管金鑰 (
aws/s3
)。使用預設金鑰,使用來源帳戶擁有的 Amazon S3 受管金鑰來加密物件,防止物件與其他帳戶共用。因此,目的地帳戶將無法存取目的地儲存貯體中的物件。若要使用屬於目的地帳戶的 AWS KMS 金鑰來加密目的地物件,目的地帳戶必須將
kms:GenerateDataKey
和kms:Encrypt
許可授予KMS金鑰政策中的複寫角色。若要在KMS金鑰政策中使用下列範例陳述式,請將 取代
為您自己的資訊:user input placeholders
{ "Sid": "AllowS3ReplicationSourceRoleToUseTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789101
:role/s3-replication-role
" }, "Action": ["kms:GenerateDataKey", "kms:Encrypt"], "Resource": "*" }如果您針對 AWS KMS 金鑰政策中的
Resource
陳述式使用星號 (*
),則政策會授予僅複寫角色使用KMS金鑰的許可。此政策不允許複寫角色提升其許可。根據預設,KMS金鑰政策會將根使用者的完整許可授予金鑰。這些許可可以委派給相同帳戶中的其他使用者。除非來源KMS金鑰政策中有
Deny
陳述式,否則使用IAM政策將複寫角色許可授予來源KMS金鑰就已足夠。注意
KMS 限制存取特定CIDR範圍、虛擬私有雲端 (VPC) 端點或 S3 存取點的金鑰政策可能會導致複寫失敗。
如果來源或目的地KMS金鑰根據加密內容授予許可,請確認儲存貯體的 Amazon S3 儲存貯體金鑰已開啟。如果儲存貯體已開啟「S3 儲存貯體」金鑰,則加密內容必須是儲存貯體層級資源,如下所示:
"kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::
amzn-s3-demo-source-bucket
" ] "kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
" ]除了KMS金鑰政策授予的許可之外,來源帳戶必須將下列最低許可新增至複寫角色IAM的政策:
{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "
Source-KMS-Key-ARN
" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": [ "Destination-KMS-Key-ARN
" ] }如需如何複寫使用 加密的物件的詳細資訊 AWS KMS,請參閱複寫加密的物件 。
-
如果目的地儲存貯體由另一個 擁有 AWS 帳戶,請確認儲存貯體擁有者在目的地儲存貯體上有儲存貯體政策,允許來源儲存貯體擁有者複寫物件。如需範例,請參閱為不同帳戶中的儲存貯體設定複寫。
-
如果您的物件在您驗證了許可之後仍未複寫,請檢查下列位置是否有任何明確的
Deny
陳述式:-
來源或目的地儲存貯體政策中的
Deny
陳述式。如果儲存貯體政策拒絕存取下列任何動作的複寫角色,則複寫會失敗:來源儲存貯體:
"s3:GetReplicationConfiguration", "s3:ListBucket", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging"
目的地儲存貯體:
"s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags"
-
Deny
連接到IAM角色的 陳述式或許可界限可能會導致複寫失敗。 -
Deny
AWS Organizations 服務控制政策 (SCPs) 中連接到來源或目的地帳戶的 陳述式可能會導致複寫失敗。
-
-
如果目的地儲存貯體中未出現物件複本,可能是下列問題阻礙了複寫作業:
-
如果來源儲存貯體中的物件是由另一個複寫組態所建立的複本,則 Amazon S3 不會複寫該複本。例如,如果您將複寫組態從儲存貯體 A 設定到儲存貯體 B,再設定到儲存貯體 C,則 Amazon S3 不會將儲存貯體 B 中的物件複本複寫至儲存貯體 C。
-
來源儲存貯體擁有者可以授予其他 AWS 帳戶 許可來上傳物件。根據預設,來源儲存貯體擁有者不具其他帳戶所建立之物件的任何許可。複寫組態只會複寫來源儲存貯體擁有者具備存取許可的物件。為了避免此問題,來源儲存貯體擁有者可以授予其他 AWS 帳戶 許可,以有條件地建立物件,需要這些物件的明確存取權限。如需政策範例,請參閱 授予跨帳戶許可,以在確保儲存貯體擁有者具有完全控制時上傳物件。
-
-
假設您在複寫組態中新增一個規則,以複寫含特定標籤的物件子集。在此情況下,您必須於建立物件時指派特定標籤金鑰與值,以便 Amazon S3 複寫物件。如果您先建立物件,之後才將標籤新增至現有物件,Amazon S3 就不會複寫物件。
-
使用 Amazon S3 事件通知,在物件未複寫至目的地 時通知您執行個體 AWS 區域。Amazon S3 事件通知可透過 Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notification Service (Amazon SNS) 或 取得 AWS Lambda。如需詳細資訊,請參閱使用 Amazon S3 事件通知接收複寫失敗事件。
您也可以使用「Amazon S3 事件通知」,以檢視複寫失敗原因。若要檢閱失敗原因的清單,請參閱 Amazon S3 複寫失敗原因。
批次複寫錯誤
若要對未複寫至目的地儲存貯體的物件進行故障診斷,請檢查儲存貯體的不同類型的許可、複寫角色,以及用來建立批次複寫任務IAM的角色。此外,請務必檢查儲存貯體的封鎖公開存取設定和 S3 物件擁有權設定。
如需使用批次操作的其他疑難排解提示,請參閱 批次操作疑難排解。
使用「批次複寫」時,您可能會遇到下列其中一個錯誤:
-
清單產生找不到符合篩選條件的金鑰。
發生此錯誤的原因如下:
-
當來源儲存貯體中的物件存放在 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 儲存類別中時。
若要在這些物件上使用批次複寫,請先在批次操作任務中使用還原 (
S3InitiateRestoreObjectOperation
) 操作,將其還原至 S3 標準儲存體類別。如需詳細資訊,請參閱 還原已封存的物件 和還原物件 (批次作業)。在還原了物件之後,您可以使用「批次複寫」任務來複寫它們。 -
當提供的篩選條件與來源儲存貯體中的任何有效物件不相符時。
驗證並更正篩選條件。例如,在批次複寫規則中,篩選條件正在尋找來源儲存貯體中具有字首 的所有物件
Tax/
。如果輸入的字首名稱不正確,開頭和結尾是斜線,/Tax/
而不是只輸入結尾,則找不到 S3 物件。若要解決錯誤,請在複寫規則Tax/
中修正字首,在此情況下從/Tax/
到 。
-
-
批次操作狀態為失敗,原因如下:無法將任務報告寫入報告儲存貯體。
如果用於批次操作任務IAM的角色無法將完成報告放入您建立任務時指定的位置,則會發生此錯誤。若要解決此錯誤,請檢查IAM角色是否具有儲存貯體的
s3:PutObject
許可,以便儲存批次操作完成報告。我們建議您將報告交付至與來源儲存貯體不同的儲存貯體。如需解決此錯誤的其他提示,請參閱 當存在許可問題或啟用 S3 物件鎖定保留模式時,任務報告不會交付。
-
批次操作已完成但失敗,失敗總數不是 0。
如果正在執行的「批次複寫」任務發生物件許可不足問題,則會發生這個錯誤。如果您使用批次複寫任務的複寫規則,請確定用於複寫IAM的角色具有從來源或目的地儲存貯體存取物件的適當許可。您也可以檢查批次複寫完成報告,以檢閱特定的 Amazon S3 複寫失敗原因。
-
批次任務已成功執行,但目的地儲存貯體中預期的物件數目不相同。
當「批次複寫」任務中提供的清單檔案中所列的物件與您在建立任務時選取的篩選條件之間若有不符時,就會發生這個錯誤。當來源儲存貯體中的物件不符合任何複寫規則,且未包含在產生的清單檔案中時,您可能也會收到此訊息。
將新的複寫規則新增至現有複寫組態之後,發生「批次操作」失敗
「批次操作」會嘗試針對來源儲存貯體的複寫組態中的每個規則執行現有的物件複寫。如果任何現有的複寫規則發生問題,可能會發生失敗。
「批次操作」任務的完成報告會說明任務失敗原因。如需常見錯誤的清單,請參閱 Amazon S3 複寫失敗原因。