やりたいこと
BアカウントのIAMユーザーから、Aアカウント所有のS3バケットへファイルをアップロード
やり方
①Aアカウント
バケット作成
設定がデフォルトでいい
(ACL使わない)
(パブリックアクセスブロックをオンのまま)
バケットポリシー設定
(BアカウントのIAMユーザー作成へアクセス権限を付与)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Only allow writes to my bucket with bucket owner full control",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::BアカウントのID:user/BアカウントのIAMユーザー名"
]
},
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::Aアカウントのバケット名/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
②Bアカウント
IAMユーザー作成
CLIのアクセス情報を発行してください
③ローカルPC
CLIのスイッチロールを設定
credentialsファイルにBアカウントのアクセス情報を登録
[default]
aws_access_key_id = AアカウントのID
aws_secret_access_key = Aアカウントのアクセスキー
[b-account]
aws_access_key_id = BアカウントのID
aws_secret_access_key = Bアカウントのアクセスキー
④コマンド
--profileを付けて、Bアカウントのアクセス情報を使う
aws s3 cpのコマンドでファイルをアップロード
aws --profile b-account s3 cp ./アップロードファイル名 s3://Aアカウントのバケット名 --acl bucket-owner-full-control
無事Aアカウントのバケットへアップロードできた
参考サイト