本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
當不同帳戶擁有來源與目的地儲存貯體時變更複本擁有者
當複寫組態中的來源
和目標
儲存貯體擁有不同時 AWS 帳戶,您可以告訴 Amazon S3 將複本擁有權變更為擁有目標
儲存貯體 AWS 帳戶 的擁有權。此範例說明如何使用 Amazon S3 主控台以及變 AWS CLI 更複本擁有權。如需詳細資訊,請參閱 變更複本擁有者。
注意
當您使用 S3 複寫且來源和目的地儲存貯體屬於不同時 AWS 帳戶,目的地儲存貯體的擁有者可以停用 ACL (使用儲存貯體擁有者強制執行物件擁有權設定),將複本擁有權變更為擁有目的 AWS 帳戶 地儲存貯體的擁有權。此設定會模擬現有的擁有者覆寫行為,而無需 s3:ObjectOwnerOverrideToBucketOwner
許可。這意味著使用儲存貯體擁有者強制執行設定複寫至目的地儲存貯體的所有物件都由目的地儲存貯體擁有者所擁有。如需「物件擁有權」的詳細資訊,請參閱 控制物件的擁有權並停用儲存貯體的 ACL。
如需 AWS Key Management Service 在跨帳戶案例中使用資料夾端加密來設定複寫的詳細資訊,請參閱。跨帳戶案例之授予其他許可
如需 step-by-step 指示,請參閱為相同帳戶擁有的來源和目的地儲存貯體設定複寫。本主題提供在值區為相同且不同擁有時設定複製組態的指示 AWS 帳戶。
若要使用變更複本擁有權 AWS CLI,您可以建立儲存貯體、在儲存貯體上啟用版本控制、建立 IAM 角色以授予 Amazon S3 複寫物件的權限,以及將複寫組態新增至來源儲存貯體。請在複寫組態中指示 Amazon S3 變更複本擁有者。您也可以測試設定。
當來源和目的地值區為不同時變更複本擁有權 AWS 帳戶 (AWS CLI)
-
在此範例中,您會以兩個不同的方式建立
來源
值區和目
的地值區 AWS 帳戶。 AWS CLI 使用兩個具名的設定檔進行配置。此範例分別使用名為acctA
和acctB
的描述檔。如需設定憑證描述檔的詳細資訊,請參閱《AWS Command Line Interface 使用者指南》https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html中的具名描述檔。重要
用於此練習的描述檔必須有必要的許可。例如,您可以在複寫組態中指定 Amazon S3 可以擔任的 IAM 角色。只有當您所用的描述檔有
iam:PassRole
許可時才可執行此作業。如果您使用管理員使用者憑證建立具名描述檔,即可執行所有任務。如需詳細資訊,請參閱《IAM 使用者指南》中的授與使用者將角色傳遞給 AWS 服務的權限。您需要確定這些描述檔有必要的許可。例如,複寫組態包含 Amazon S3 可以擔任的 IAM 角色。用以連接此類組態和儲存貯體的具名描述檔只有在具備
iam:PassRole
許可時才可執行此作業。如果您在建立這些具名描述檔時指定管理員使用者憑證,則它們全都具備所有許可。如需詳細資訊,請參閱《IAM 使用者指南》中的授與使用者將角色傳遞給 AWS 服務的權限。 -
建立
source
儲存貯體並啟用版本控制。本範例會在美國東部 (維吉尼亞北部) (us-east-1) 區域中建立source
儲存貯體。aws s3api create-bucket \ --bucket
source
\ --region us-east-1 \ --profile acctAaws s3api put-bucket-versioning \ --bucket
source
\ --versioning-configuration Status=Enabled \ --profile acctA -
建立
destination
儲存貯體並啟用版本控制。本範例會在美國西部 (奧勒岡) (us-west-2) 區域中建立destination
儲存貯體。使用不同於source
儲存貯體所使用的 AWS 帳戶 設定檔。aws s3api create-bucket \ --bucket
destination
\ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctBaws s3api put-bucket-versioning \ --bucket
destination
\ --versioning-configuration Status=Enabled \ --profile acctB -
您必須在
destination
儲存貯體政策中新增許可,以允許複本擁有權的變更。-
將下列政策儲存至
。destination-bucket-policy
.json{ "Version": "2012-10-17", "Statement": [ { "Sid":
"destination_bucket_policy_sid"
, "Principal": { "AWS":"source-bucket-owner-account-id"
}, "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::destination
/*" ] } ] } -
將以上原則放到
destination
儲存貯體:aws s3api put-bucket-policy --region
$
{destination_region
} --bucket$
{destination
} --policy file://destination_bucket_policy
.json
-
-
建立 IAM 角色。您可以在複寫組態中指定稍後要新增至
source
儲存貯體的角色,Amazon S3 就會擔任此角色以代您複寫物件。建立 IAM 角色需要兩個步驟:-
建立角色。
-
將許可政策連接到角色。
-
建立 IAM 角色。
-
複製下列信任政策,並將它儲存至本機電腦目前目錄下名稱為
s3-role-trust-policy.json
的檔案中。此政策會授予 Amazon S3 擔任該角色的許可。{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
執行下列 AWS CLI 命令以建立角色。
$
aws iam create-role \ --role-name replicationRole \ --assume-role-policy-document file://s3-role-trust-policy.json \ --profile acctA
-
-
將許可政策連接到角色。
-
複製下列許可政策,並將它儲存至本機電腦目前目錄中名為
s3-role-perm-pol-changeowner.json
的檔案。此政策會授予各種 Amazon S3 儲存貯體與物件動作的許可。在下列步驟中,您需要建立 IAM 角色,並將此政策連接至該角色。{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::
source
/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::source
" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Resource":"arn:aws:s3:::destination
/*" } ] } -
若要建立政策並將它連接至角色,請執行下列命令。
$
aws iam put-role-policy \ --role-name replicationRole \ --policy-document file://s3-role-perm-pol-changeowner.json \ --policy-name replicationRolechangeownerPolicy \ --profile acctA
-
-
-
將複寫組態新增到來源儲存貯體。
-
AWS CLI 需要將複寫組態指定為 JSON。將下列 JSON 儲存至您本機電腦目前目錄中名為
replication.json
的檔案。在組態中,新增AccessControlTranslation
指出複本擁有權的變更。{ "Role":"
IAM-role-ARN
", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ }, "Status":"Enabled", "Destination":{ "Bucket":"arn:aws:s3:::destination
", "Account":"destination-bucket-owner-account-id
", "AccessControlTranslation":{ "Owner":"Destination" } } } ] } -
提供
destination
儲存貯體擁有者帳戶 ID 和IAM-role-ARN
的值,以編輯 JSON。儲存變更。 -
執行下列命令,將複寫組態新增至來源儲存貯體。提供
source
儲存貯體名稱。$
aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucketsource
\ --profile acctA
-
-
在 Amazon S3 主控台中檢查複本擁有權。
登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/
。 -
將物件新增到
來源
儲存貯體。確認目的地
值區包含物件複本,以及複本的擁有權已變更為擁有目
的地值區 AWS 帳戶 的擁有權。
如需新增複寫組態的程式碼範例,請參閱 使用 AWS 軟體開發套件。您需要正確修改複寫組態。如需相關概念資訊,請參閱 變更複本擁有者。