閉域 EKS クラスター用にイメージを pull してきて ECR に push する用のシェルスクリプト。
#!/bin/bash # 引数でリポジトリの URL をもらう # k8s.gcr.io/cpa/cluster-proportional-autoscaler:1.0.0 # これを ECR の cpa/cluster-proportional-autoscaler:1.0.0 にアップロードする set -eu set -o pipefail # 引数の数が1でなければエラー if [ $# -ne 1 ]; then echo "実行するには 1 個の引数が必要です。" 1>&2 exit 1 fi origin_image=$1 origin_repo=${origin_image%%:*} tag=${origin_image##*:} ecr_repo=${origin_repo#*/} # リポジトリがなければ作成 if aws ecr describe-repositories --repository-names ${ecr_repo} > /dev/null 2>&1; then echo "リポジトリが既に存在します。" else aws ecr create-repository --repository-name ${ecr_repo} fi # イメージをプル docker pull ${origin_repo}:${tag} # ECR にログイン AWS_REGION="ap-northeast-1" AWS_ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account) aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com # タグ付け docker tag ${origin_repo}:${tag} ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${ecr_repo}:${tag} # イメージをプッシュ docker push ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${ecr_repo}:${tag}