{ "バージョン": "2012-10-17"、 "ステートメント": { "Sid": "PermissionsToAAccount"、 "効果": "許可"、 "プリンシパル":{ "AWS": "arn:aws:iam :: XXXXXXX:root" }、 "アクション": "s3:*"、 "リソース": "arn:aws:s3 ::: DestinationS3Bucket"、 "arn:aws: s3 ::: DestinationS3Bucket /*" } }
アカウントAの認証情報を使用してアカウントAの1つのS3バケットからアカウントBのバケットにファイルをコピーすると、宛先バケット内のファイルの所有者はアカウントAになります(アカウントAはアカウントBのファイルを作成したプリンシパルです)バケツ)。
ソースから宛先バケットへのファイルのコピー中に、--acl bucket-owner-full-control
オプション。アカウントBがファイルを制御できるようにします。そうしないと、アカウントBのバケットに、アカウントBがアクセスまたは制御できないファイルがある可能性があります。
別のオプションは、アカウントBの認証情報を使用して、ソースから宛先バケットにコピーすることです。これにより、コピーされたファイルの所有者はアカウントBになります。
John Hanelyが提供するソリューションは機能しますが、所有権がすぐに変わるわけではありません。変更するには、別のコマンドを実行する必要があります
最初の一歩:
aws s3 cp s3://yourbucket s3://yourbucket --recursive --acl bucket-owner-full-control
第二段階:
aws s3 cp s3://yourbucket s3://yourbucket --recursive --metadata-directive REPLACE
通知--meta-directive REPLACE
この方法でファイルとメタデータを一緒に置き換える必要があります-
aws s3 cp s3://yourbucket s3://yourbucket --recursive --acl bucket-owner-full-control --metadata-directive REPLACE