如何在啟用物件鎖定的 Amazon S3 儲存貯體中設定跨帳戶複寫?
我想在已啟用物件鎖定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體上設定跨帳戶複寫。
解決方法
若要在啟用物件鎖定的 Amazon S3 儲存貯體上設定跨帳戶複寫,請完成以下先決條件:
- 確定目的地儲存貯體已啟用物件鎖定。如果目的地儲存貯體未啟用物件鎖定,請聯絡 AWS Support 以提出您的請求。
- 確定您可以存取 AWS Command Line Interface (AWS CLI) 或 AWS CloudShell。
- 在開始複寫之前,請確定您擁有物件鎖定權杖。
步驟 1: 為具有必要權限的複寫建立 IAM 角色
1. 在 AWS Identity and Access Management (IAM) 主控台中為具有 Amazon S3 信任關係的來源帳戶建立複寫角色。
信任關係如下所示:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
2. 請務必將下列權限附加到 IAM 角色:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SourceBucketPermissions", "Effect": "Allow", "Action": [ "s3:GetObjectRetention", "s3:GetObjectVersionTagging", "s3:GetObjectVersionAcl", "s3:ListBucket", "s3:GetObjectVersionForReplication", "s3:GetObjectLegalHold", "s3:GetReplicationConfiguration" ], "Resource": [ "arn:aws:s3:::SourceBucketName/*", "arn:aws:s3:::SourceBucketName" ] }, { "Sid": "DestinationBucketPermissions", "Effect": "Allow", "Action": [ "s3:ReplicateObject", "s3:ObjectOwnerOverrideToBucketOwner", "s3:GetObjectVersionTagging", "s3:ReplicateTags", "s3:ReplicateDelete" ], "Resource": [ "arn:aws:s3:::DestBucketName/*" ] } ] }
3. 如果您使用 AWS Key Management Service (AWS KMS) 金鑰,請務必同時附加下列權限:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SourceBucketPermissions", "Effect": "Allow", "Action": [ "s3:GetObjectRetention", "s3:GetObjectVersionTagging", "s3:GetObjectVersionAcl", "s3:ListBucket", "s3:GetObjectVersionForReplication", "s3:GetObjectLegalHold", "s3:GetReplicationConfiguration" ], "Resource": [ "arn:aws:s3:::SourceBucketName/*", "arn:aws:s3:::SourceBucketName" ] }, { "Sid": "DestinationBucketPermissions", "Effect": "Allow", "Action": [ "s3:ReplicateObject", "s3:ObjectOwnerOverrideToBucketOwner", "s3:GetObjectVersionTagging", "s3:ReplicateTags", "s3:ReplicateDelete" ], "Resource": [ "arn:aws:s3:::DestBucketName/*" ] }, { "Sid": "SourceBucketKMSKey", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Effect": "Allow", "Resource": "SourceBucketKMSKeyARN" }, { "Sid": "DestinationBucketKMSKey", "Action": [ "kms:Encrypt", "kms:GenerateDataKey" ], "Effect": "Allow", "Resource": "DestinationBucketKMSKeyARN" } ] }
步驟 2: 更新 AWS KMS key 權限
請確保目的地帳戶的 AWS KMS key 允許存取來源帳戶中的複寫 IAM 角色。
範例:
{ "Sid": "AllowS3ReplicationSourceRoleToUseTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789101:role/s3-replication-role" }, "Action": [ "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": "*" }
注意: 您無法使用受管 AWS KMS key aws/S3 進行跨帳戶複寫。但您可以使用 SSE-S3 加密。
注意:如果您在金鑰政策中使用星號 (*) 作為資源,則該政策只會將金鑰權限授予複寫角色。政策不允許複寫角色提升其權限。
步驟 3: 將下列儲存貯體政策新增至目的地帳戶
在主體區段中,請務必新增複寫 IAM 角色 (於步驟 1 中建立) 的 ARN。
{ "Version": "2012-10-17", "Id": "PolicyForDestinationBucket", "Statement": [ { "Sid": "ReplicationPermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role" }, "Action": [ "s3:ReplicateDelete", "s3:ReplicateObject", "s3:ObjectOwnerOverrideToBucketOwner", "s3:GetBucketVersioning", "s3:PutBucketVersioning" ], "Resource": [ "arn:aws:s3:::DestBucketName/*", "arn:aws:s3:::DestBucketName" ] } ] }
步驟 4: 建立 replication.json 檔案
在來源帳戶中建立名為 replication.json 的檔案,看起來類似以下內容:
{ "Role": "arn:aws:iam::123456789012:role/s3-replication-role", "Rules": [ { "Status": "Enabled", "Priority": 10, "DeleteMarkerReplication": { "Status": "Disabled" }, "Filter": { "Prefix": "" }, "Destination": { "Bucket": "arn:aws:s3:::destination_bucket" } } ] }
此檔案包含設定複寫的 JSON 格式參數。這些參數與使用 Amazon S3 主控台設定複寫時可能使用的參數相同。您必須使用 AWS CLI 來設定複寫,因為您還無法使用 Amazon S3 主控台進行此操作。
請務必將 s3-replication-role 更換成步驟 1中建立的 IAM 角色。此外,請視需要包含目的地儲存貯體的 ARN、前綴規格,以及刪除標記偏好設定。
步驟 5: 設定複寫
儲存前述組態後,使用下列 AWS CLI 命令傳遞檔案:
aws s3api put-bucket-replication --bucket <SOURCE BUCKET> --replication-configuration file://Replication.json --token <TOKEN>
若要取得此命令使用的物件鎖定權杖值,請聯絡 AWS Support。<TOKEN> 值是來源儲存貯體的物件鎖定權杖。
步驟 6: 驗證
當您執行前述命令時,複寫規則會新增至來源儲存貯體。此規則允許將新增的物件複寫到目的地儲存貯體。您可以透過新增物件至來源並檢查目的地來測試此規則。
注意: 設定複寫後,您可以使用 Amazon S3 主控台更新複寫組態。若要複寫使用 AWS KMS 加密的物件,請選取加密下的複寫 AWS KMS 加密物件來修改複寫組態。
相關資訊
相關內容
- 已提問 6 個月前lg...
- 已提問 2 個月前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 個月前