CodeBuild で 他 AWS アカウントのリソースにアクセスする方法

CodeBuild にてクロスアカウントを利用した別アカウントの AWS サービスを利用する方法について書きたいと思います。

前提

  • クロスアカウントしたいアカウントからのリクエストが AssumeRole によってアクセス許可されていること

クレデンシャル

以下のファイルを~/.aws/credentialsに保存します。ただ CodeBuild に対してのリモートログインはできないので、
Docker ビルドしておく、パラメーターストアに保管しておき、buildspec.yaml の中で取得する処理を書くといった方法で対応することになるかと思います。
ポイントはcredential_sourceEcsContainer とすることです。

[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

以上