こんにちは、技術1課の岩本です。
Codebuild大好き。某メガネのCM風で始まりました今回ですが、
Codebuildは柔軟に色々なコマンドが実行できるので、便利なサービスです。
今回は、Codebuild上でコマンドを実行する際に、クレデンシャルを取得する方法を記載します。
まず結論から
buildspec.ymlには以下のように記載します。 (コマンドの実行に必要なRoleは事前にCodebuildProject自体に付与しておいてください)
---
version: 0.2
phases:
install:
commands:
- apk --update add curl
- apk --update add py-pip
- apk --update add jq
- pip install awscli
pre_build:
commands:
- curl -qL -o aws_credentials.json 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI > aws_credentials.json
- aws configure set region $AWS_REGION
- aws configure set aws_access_key_id `jq -r '.AccessKeyId' aws_credentials.json`
- aws configure set aws_secret_access_key `jq -r '.SecretAccessKey' aws_credentials.json`
- aws configure set aws_session_token `jq -r '.Token' aws_credentials.json`
build:
commands:
- echo "hello"
post_build:
commands:
- echo "hollo"
解説
- クレデンシャル取得には、以下のコマンドが必要となります、DockerImageに含まれていない場合は、Codebuild上でインストールします。
- curl
- awscli
- jq
169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
にアクセスしMetaDataを取得します。- MetaDataはJson形式のため、Jqコマンドを使って必要な情報を取得します。
まとめ
上記を利用することで、PackerやTerraformまた、CodenizeToolをパイプラインの一部として利用ができます。
ぜひご活用ください。