なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

クロスアカウントS3の設定

クロスアカウントとは

AWSのアカウントが別個に存在するということ。セキュリティ的に分けている方針もあれば、そもそも使用している会社組織が異なるために別のアカウントになっていることもあるでしょう。今回はこれでだいぶハマりました。

クロスアカウントでのS3使用のユースケース

登場人物の整理
  • アカウントA, Bが存在する
  • アカウントAにはbucketAが存在する
  • アカウントBにはbucketBが存在する
  • アカウントBのS3にアクセスできるユーザとそのキーが発行されている
やりたいこと
  1. アカウントBのキーでbucketBからファイルダウンロード
  2. ファイルを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