手順
- アカウントAにファイルをアップロードする
$ aws s3 cp test.txt s3://az-test-src/ upload: ./test.txt to s3://az-test-src/test.txt
- アカウントAからアカウントBにファイルをコピーする
$ aws s3 cp s3://az-test-src/test.txt s3://az-test-dst/ copy: s3://az-test-src/test.txt to s3://az-test-dst/test.txt
- オブジェクトの所有者はコピー元アカウントになっている
$ aws s3api get-object-acl --bucket az-test-src --key test.txt { "Owner": { "DisplayName": "azekatsu", ★コピー元アカウント "ID": "...." }, "Grants": [ { "Grantee": { "Type": "CanonicalUser", "DisplayName": "azekatsu", "ID": "..." }, "Permission": "FULL_CONTROL" } ] }
https://docs.aws.amazon.com/ja_jp/cli/latest/reference/s3api/put-object-acl.html を見ても所有者の変更はできなさそう。
- コピー先アカウントにオブジェクトに対するフルコントロールを付与する
$ aws s3api put-object-acl --bucket az-test-dst --key test.txt --acl bucket-owner-full-control
- フルコントロール権限が付与されたことを確認する
$ aws s3api get-object-acl --bucket az-test-dst --key test.txt { "Owner": { "DisplayName": "azekatsu", "ID": "..." }, "Grants": [ { "Grantee": { "Type": "CanonicalUser", "DisplayName": "azekatsu", "ID": "..." }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "CanonicalUser", "DisplayName": "yoheia", ★コピー先アカウント(バケット所有者)にフルコントロール権限が付与されている "ID": "..." }, "Permission": "FULL_CONTROL" } ] }