如何 运行 AWS ECS 集群服务中的 AWS ECS 任务而不是从 Circle CI 的 "aws-ecs/run-task" 中排除服务
How to run an AWS ECS task inside a service of AWS ECS cluster and not ouside the service from Circle CI's "aws-ecs/run-task"
我正在使用 Circle CI 构建映像并将其推送到 AWS ECR,然后使用此映像在 AWS ECS 集群内的服务中部署容器(以 FARGATE 作为实例)。问题是,任务 运行 在此服务之外,但在同一个集群中。
这是与 AWS 自动启动的任务并存的任务:
组名为 service:adp-ecs-service
的组是 运行ning 内部服务组,组 adp-ecs-service
组是 运行ning 服务外组。如果我停止了名为 service:adp-ecs-service
的组,将自动重新启动并使用 ECR 中标记为 'latest_ci' 的图像,但其他组不会启动。而且这个服务一次只能有一个服务。
通过查看此图像中的组,我尝试以多种方式在 'config.yml' 文件的 group
标记中指定服务名称,但无济于事。这是我尝试过的所有内容(您可以在我的提交中看到这些 here):
- 'service:adp-ecs-service'
- 服务:adp-ecs-服务
他们两个(带引号和不带引号)都产生了以下错误:
An error occurred (InvalidParameterException) when calling the RunTask operation: Invalid namespace for group.
- adp-ecs-服务
- 服务
它们都是运行服务外的任务(你可以在上图中看到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
这是服务:
上图可以看到,运行ning task count 和 desired task count 是 1,但是这个集群里有 2 个 task 运行ning,一个在 service 之外。
我在这里想要的是,如果我 运行 服务中的一个新任务,它应该通过停止前一个图像从 ECR 中提取最新图像来启动一个容器。那么,如何正确指定服务名称并完成此操作?
简单地说aws-ecs/run-task不是你想要的。您需要将新任务定义部署到服务,而不是 运行 它。
您正在寻找 aws-ecs/deploy-service-update and update-task-definition(如果您还没有)。
我正在使用 Circle CI 构建映像并将其推送到 AWS ECR,然后使用此映像在 AWS ECS 集群内的服务中部署容器(以 FARGATE 作为实例)。问题是,任务 运行 在此服务之外,但在同一个集群中。
这是与 AWS 自动启动的任务并存的任务:
service:adp-ecs-service
的组是 运行ning 内部服务组,组 adp-ecs-service
组是 运行ning 服务外组。如果我停止了名为 service:adp-ecs-service
的组,将自动重新启动并使用 ECR 中标记为 'latest_ci' 的图像,但其他组不会启动。而且这个服务一次只能有一个服务。
通过查看此图像中的组,我尝试以多种方式在 'config.yml' 文件的 group
标记中指定服务名称,但无济于事。这是我尝试过的所有内容(您可以在我的提交中看到这些 here):
- 'service:adp-ecs-service'
- 服务:adp-ecs-服务 他们两个(带引号和不带引号)都产生了以下错误:
An error occurred (InvalidParameterException) when calling the RunTask operation: Invalid namespace for group.
- adp-ecs-服务
- 服务
它们都是运行服务外的任务(你可以在上图中看到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
这是服务:
我在这里想要的是,如果我 运行 服务中的一个新任务,它应该通过停止前一个图像从 ECR 中提取最新图像来启动一个容器。那么,如何正确指定服务名称并完成此操作?
简单地说aws-ecs/run-task不是你想要的。您需要将新任务定义部署到服务,而不是 运行 它。
您正在寻找 aws-ecs/deploy-service-update and update-task-definition(如果您还没有)。