简单连续为aws中的docker提供程序

我正在使用AWS Code Pipeline,Code Build创build一个新的Docker容器并将其推送到ECR。

我的应用程序是一个简单的直接单容器的基础。 下拉当前正在运行的容器并从ECSregistry中重新启动一个新容器(通过代码pipe道进行代码构build的输出)将会减less摩擦。

我尝试了CloudFormation和EC2用户数据,一方面是自定义脚本,另一方面是ECS(带有任务定义的CloudFormation)(尚未成功)。 我强烈地感到必须有更明显和更简单的方法。

你有没有检查aws ecs命令行工具 ? 它允许编写一个简单的bash脚本来更新任务和服务:

 cluster='<cluster-id>' service='<service-id>' project='<project-name>' elb='<ELB-id>' version=$(git rev-parse --short=12 HEAD) sed "s#{image}#${repo}:app-${version}#g" ./docker-compose.yml | sed "s#{frontend}#${repo}:frontend-${version}#g" | sed "s#{logger}#${repo}:logger-${version}#g"> /tmp/docker-compose.yml ecs-cli compose --file /tmp/docker-compose.yml --project-name ${project} create taskDefinition=$(aws ecs list-task-definitions --family-prefix "ecscompose-${project}" --output text --sort DESC | awk '{print $2}' | head -n 1) if [[ $(aws ecs list-services --cluster "${cluster}" --output text) =~ ${service} ]]; then aws ecs update-service --cluster "${cluster}" --service ${service} --task-definition "$taskDefinition" >> /dev/null else aws ecs create-service --cluster "${cluster}" --service ${service} --task-definition "$taskDefinition" --load-balancers loadBalancerName=${elb},containerName=nginx,containerPort=80 --desired-count 5 --role arn:aws:iam::395910257915:role/ecsServiceRole fi