如何解决如何在AWS ECS集群的服务内运行AWS ECS任务,而不是从Circle CI的“ aws-ecs / run-task”
我正在使用Circle CI来构建映像并将其推送到AWS ECR,然后使用该映像在AWS ECS集群内的服务中部署一个容器(以FARGATE作为实例)。问题是,任务正在此服务之外运行,但在同一群集中。
以下是AWS自动启动的任务所在的任务:
具有组service:adp-ecs-service
的组是在服务内部运行的组,具有组adp-ecs-service
的组是在服务外部运行的组。如果我停止了,则名为service:adp-ecs-service
的组将自动重新启动,并带有ECR中标记为“ latest_ci”的图像,但其他人将无法启动。而且此服务一次只能有一项服务。
通过查看此图中的组,我尝试以多种方式在'config.yml'文件的group
标签中指定服务的名称,但无济于事。这是我尝试过的所有内容(您可以在我的提交here中看到这些内容):
- 'service:adp-ecs-service'
- service:adp-ecs-service 两者(带引号和不带引号)均产生以下错误:
An error occurred (InvalidParameterException) when calling the RunTask operation: Invalid namespace for group.
- adp-ecs-service
- 服务
他们两个都在服务外运行了任务(您可以在上图中看到3的输出。我什至也尝试了1和2的环境变量。
这是“ /.circleci/config.yml”中“ aws-ecs / run-task”的代码(完整的文件可以在here中找到):
- 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,但是此群集中正在运行2个任务,其中一个在服务之外。
我要的是,如果我在服务中运行新任务,它应该通过停止前一个图像从ECR中提取最新图像来启动容器。那么,如何正确指定服务名称并完成此操作?
解决方法
简单地放置aws-ecs / run-task不是您想要的。您需要将新的任务定义部署到服务,而不是运行它。
您正在寻找aws-ecs/deploy-service-update和update-task-definition(如果尚未使用)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。