S3 でダッシュボードで ACL が見れなくなったり、そのオブジェクトがアクセス不能になったことがあり、その解消方法を記録しておく。
原因
どうやら
別アカウントのIDプールでS3バケットにアップロードしたファイルの所有者が別アカウントになっておりアクセス不可になっていた。
対応概要
別アカウントから bucket-owner-full-contgorl
の acl を付加してアクセスできるようになったかも...
コピーすると所有者が変わるが、--metadata
で何か変更しないとコピーできなかった
参考:Amazon S3 から 403: Access Denied エラーをトラブルシューティングする方法とは?
作業概要
具体的な作業履歴。
1. 現状確認
aws s3api list-objects --bucket {バケット名} --prefix {キー名プリフィックス} --profile {プロファイル名}
で所有者を確認してS3を使っているAWSアカウントとは異なるAWSアカウントが所有者であることを確認した。
2. アクセス許可付与
aws s3api put-object-acl --bucket {バケット名} --key {オブジェクトキー名} --acl bucket-owner-full-control --profile {プロファイル名}
で別アカウントでもアクセス許可を与える。
3. コピーして所有者変更
aws s3 cp s3://{バケット名}/{キー名} s3://{バケット名}/{キー名} --profile {プロファイル} --cache-control "max-age=30" --metadata "Version=1"
同じファイルにコピー。とりあえず --metadata "Version=1"
で metadata を変更。