我試圖重新啓動AWS服務(基本上停止並啓動服務中的所有任務),而不對任務定義進行任何更改。AWS ECS重新啓動具有相同任務定義和映像且無停機的服務
原因是因爲圖像的每個版本都附有latest
標籤。
我試着停止所有任務並讓服務重新創建它們,但這意味着在我的實例(2)中重新啓動服務時會出現一些temporarily unavailable
錯誤。
處理這個問題的最佳方法是什麼?說,一種藍綠色的部署策略,以避免停機?
這是我目前的。它的缺點是我的應用會在幾秒鐘內關閉,因爲服務的任務在刪除後將被重建。
configure_aws_cli(){
aws --version
aws configure set default.region us-east-1
aws configure set default.output json
}
start_tasks() {
start_task=$(aws ecs start-task --cluster $CLUSTER --task-definition $DEFINITION --container-instances $EC2_INSTANCE --group $SERVICE_GROUP --started-by $SERVICE_ID)
echo "$start_task"
}
stop_running_tasks() {
tasks=$(aws ecs list-tasks --cluster $CLUSTER --service $SERVICE | $JQ ".taskArns | . []");
tasks=($tasks)
for task in "${tasks[@]}"
do
[[ ! -z "$task" ]] && stop_task=$(aws ecs stop-task --cluster $CLUSTER --task "$task")
done
}
push_ecr_image(){
echo "Push built image to ECR"
eval $(aws ecr get-login --region us-east-1)
docker push $AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/repository:$TAG
}
configure_aws_cli
push_ecr_image
stop_running_tasks
start_tasks
沒有AWS現在有這種發動機? – Elaine