CodeBuild にてクロスアカウントを利用した別アカウントの AWS サービスを利用する方法について書きたいと思います。
前提
- クロスアカウントしたいアカウントからのリクエストが AssumeRole によってアクセス許可されていること
クレデンシャル
以下のファイルを~/.aws/credentials
に保存します。ただ CodeBuild に対してのリモートログインはできないので、
Docker ビルドしておく、パラメーターストアに保管しておき、buildspec.yaml の中で取得する処理を書くといった方法で対応することになるかと思います。
ポイントはcredential_source
をEcsContainer
とすることです。
[cross-account]
role_arn = arn:aws:iam::xxxxxxxxxxxx:role/CrossAccountRole
credential_source = EcsContainer
エラー
Ec2InstanceMetadata
で設定してしまうと、以下のようなエラーが出力されます。
Error when retrieving credentials from Ec2InstanceMetadata: No credentials found in credential_source referenced in profile xxxxxxxxxxx
以上