CodeBuild上のDockerイメージにメタデータから取得したAWS認証情報を渡す方法
CodeBuild上でビルドしたDockerコンテナからAWSの認証情報が上手く使えないみたいなので調べてみました。
そもそも http://169.254.169.254
が使えなくて、参考URLにあるように http://169.254.170.2
から取得します。更に AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
の環境変数を組み合わせると認証情報が取得できます。
$ curl http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
{
"AccessKeyId": "ACCESS_KEY_ID",
"Expiration": "EXPIRATION_DATE",
"RoleArn": "TASK_ROLE_ARN",
"SecretAccessKey": "SECRET_ACCESS_KEY",
"Token": "SECURITY_TOKEN_STRING"
}
ちなみに AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
の変数には以下のような値が入っています。
$ echo $AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
/v2/credentials/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
上記踏まえた上で認証情報をDockerコンテナにAWSの認証情報渡す buildspec.yml
の例です。
version: 0.2
phases:
build:
commands:
# 省略----------------------------
- export NO_PROXY=169.254.170.2 # Proxyがある場合
- AWS_CRED=`curl http://169.254.170.2${AWS_CONTAINER_CREDENTIALS_RELATIVE_URI}`
- AWS_ACCESS_KEY_ID=`echo ${AWS_CRED} | jq -r .AccessKeyId`
- AWS_SECRET_ACCESS_KEY=`echo ${AWS_CRED} | jq -r .SecretAccessKey`
- AWS_SESSION_TOKEN=`echo ${AWS_CRED} | jq -r .Token`
- |
docker run \
-e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
-e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
-e AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN} \
${IMAGE_NAME} ${COMMAND}
参考URL
Author And Source
この問題について(CodeBuild上のDockerイメージにメタデータから取得したAWS認証情報を渡す方法), 我々は、より多くの情報をここで見つけました https://qiita.com/yomon8/items/9d4d50d087a02fc956a5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .