我使用循环CI构建映像并将其推送到AWS ECR,然后使用此映像在AWS ECS集群内的服务中部署容器(以FARGATE为实例)。问题是,这些任务在此服务之外运行,但在同一个集群中。
下面是由AWS自动启动的任务:

具有一个名为service:adp-ecs-service的组是运行在服务内部的一个,而具有组adp-ecs-service的是运行在服务外部的那个。有一个组名为service:adp-ecs-service的程序将自动重新启动,在ECR中标记为'latest_ci‘的图像将被重新启动,如果我停止它,但另一个将不会启动。而且这个服务一次只能有一个服务。
通过查看此图像中的组,我尝试以多种方式在“group”文件中的config.yml标记中指定服务的名称,但没有结果。下面是我尝试过的所有内容(您可以在提交的这里中看到这些):
An error occurred (InvalidParameterException) when calling the RunTask operation: Invalid namespace for group.它们都在服务之外运行任务(在上面所示的图像中可以看到3的输出。我甚至尝试过1和2的环境变量。
下面是“/.循环往复/config.yml”中“aws/run-task”的代码(完整的文件可以找到这里):
- aws-ecs/run-task:
requires:
- aws-ecr/build-and-push-image
task-definition: 'adp-ecs-family'
group: adp-ecs-service
cluster: 'adp-cluster'
aws-access-key-id: AWS_ACCESS_KEY_ID
aws-secret-access-key: AWS_SECRET_ACCESS_KEY
aws-region: 'ap-south-1'
awsvpc: true
launch-type: FARGATE
subnet-ids: $AWS_SUBNETS
security-group-ids: $AWS_ADP_SG
started-by: 'circle-ci'
assign-public-ip: ENABLED以下是服务:

正如您在上面的图片中所看到的,正在运行的任务计数和所需的任务计数是1,但是在这个集群中有两个任务在运行,一个在服务之外。
这里我想要的是,如果我在服务中运行一个新任务,它应该通过停止上一个任务从ECR中提取最新的映像来启动容器。那么,我如何正确地指定服务的名称并完成这个任务呢?
发布于 2020-11-01 04:33:52
简单地说,aws/run-任务不是您想要的。您需要将新的任务定义部署到服务,而不是运行它。
您正在寻找aws/部署-服务-更新和更新-任务定义,如果您还没有。
https://stackoverflow.com/questions/64624975
复制相似问题