【发布时间】:2017-08-01 19:09:41
【问题描述】:
我正在尝试重新启动 AWS 服务(基本上停止和启动服务中的所有任务)而不对任务定义进行任何更改。
这是因为该图像在每个构建中都附加了latest 标签。
我已尝试停止所有任务并让服务重新创建它们,但这意味着在我的实例中重新启动服务时出现temporarily unavailable 错误 (2)。
处理此问题的最佳方法是什么?比如说,一个蓝绿部署策略,这样就不会停机?
这是我目前拥有的。它的缺点是我的应用程序将关闭几秒钟,因为删除它们后正在重建服务的任务。
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
【问题讨论】:
标签: amazon-web-services deployment amazon-ecs