IAMからECRへのイメージをアップロードするロールを作成します。
既存のポリシーAmazonEC2ContainerRegistryPowerUser
を使っても良いと思います。
リージョンはap-northeast-1
前提で進みます。
aws ecr get-login
コマンドでlogin
コマンドを取得します。
アカウントIDが必要になるのですが、jq
コマンドを使って逃げます。
aws sts get-caller-identity | jq .Account
シェル
ecr-push.sh
#!/bin/bash
DOCKER_TAG="$1"
AWSID=$(aws sts get-caller-identity | jq -r .Account)
LOGIN=$(aws ecr get-login --no-include-email --region ap-northeast-1)
${LOGIN}
# docker build -t $DOCKER_TAG .
docker tag $DOCKER_TAG:latest $AWSID.dkr.ecr.ap-northeast-1.amazonaws.com/$DOCKER_TAG:latest
docker push $AWSID.dkr.ecr.ap-northeast-1.amazonaws.com/$DOCKER_TAG:latest
シェルの起動
sh ecr-push.sh docker-tag
注意点
jq
コマンドで文字列にアクセスすると、"\"xxx\""とクオーテーションがエスケープされて出力されてしまう。
jq -r
またはjq --row-output
オプションを付けることで文字列をシェル上の文字列として扱うことができる。