app runner 更新のスクリプトのメモ
意外とネットあまり見当たらなかったので書き残しておきます。
階層
階層は以下の通りです。
.
├── config
├── deploy.sh
├── push_image.sh
└── update_app_runner.sh
config
AWS のシークレット関連の値を設定します。
AWS_ACCOUNT_ID=123456789012
AWS_ECR_NAME="hoge-ecr"
AWS_APP_RUNNER_SERVICE_NAME="hoge-service"
push_image.sh
対象のイメージを ECR にプッシュするスクリプトです。
これはECRのページに載っているものと同じですが、dockerfile 名は dockerfile.production を指定しています。
#!/bin/sh
. "$PWD/config"
cd ../ &&
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com &&
docker build -t $AWS_ECR_NAME:latest -f dockerfile.production . &&
docker tag $AWS_ECR_NAME:latest $AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$AWS_ECR_NAME:latest &&
docker push $AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$AWS_ECR_NAME:latest
update_app_runner.sh
app runner をデプロイするスクリプトです。
対象の arn を取得してデプロイしているだけです。
デプロイ完了までは、教えてくれないみたいなので、状態を問い合わせを行うようにしています。
#!/bin/sh
. "$PWD/config"
# getting arn.
aws_app_runner_arn=$(aws apprunner list-services --query "ServiceSummaryList[?ServiceName=='$AWS_APP_RUNNER_SERVICE_NAME'].ServiceArn" --output text)
# start deploying.
aws apprunner start-deployment --service-arn "$aws_app_runner_arn"
while :
do
# getting deploying status.
status=$(aws apprunner describe-service --service-arn "$aws_app_runner_arn" --query "Service.Status" --output text)
if [ "$status" = "RUNNING" ]; then
echo "Success! Status: $status"
break
elif [ "$status" = "OPERATION_IN_PROGRESS" ]; then
echo "Deploying... Status: $status"
sleep 5
else
echo "Failed! Status: $status"
exit 1
fi
done
deploy.sh
あとは前述したスクリプトをまとめて実行します。
#!/bin/sh
sh push_image.sh &&
sh update_app_runner.sh
ディスカッション
コメント一覧
まだ、コメントがありません