クロスアカウントとは
AWSのアカウントが別個に存在するということ。セキュリティ的に分けている方針もあれば、そもそも使用している会社組織が異なるために別のアカウントになっていることもあるでしょう。今回はこれでだいぶハマりました。
クロスアカウントでのS3使用のユースケース
登場人物の整理
- アカウントA, Bが存在する
- アカウントAにはbucketAが存在する
- アカウントBにはbucketBが存在する
- アカウントBのS3にアクセスできるユーザとそのキーが発行されている
やりたいこと
- アカウントBのキーでbucketBからファイルダウンロード
- ファイルをbucketAへアップロード
問題
- ファイルをbucketAへアップロードできない
解決策
ここが参考になりました
- アカウントAにbucketA操作用のロールAを作る
- アカウントB側でそれをAssumeRoleできる設定にする
- ファイルをbucketAへアップロード にする際にAssumeRoleして実行
AssumeRoleはaws cliでテストすることができます。
[base-profile] aws_access_key_id = xxx aws_secret_access_key = yyy [role-for-assume-profile] role_arn = arn:aws:iam::111111111111:role/role-for-assume source_profile = base-profile aws_access_key_id = xxx aws_secret_access_key = yyy