1

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

下面是 AWS 自动启动的任务: 在此处输入图像描述 调用组的任务service:adp-ecs-service是在服务内部运行的,而带有组adp-ecs-service的任务是在服务外部运行的。如果我停止它,将使用 ECR 中标记为“latest_ci”的图像自动重新启动已调用组service:adp-ecs-service的那个,但另一个不会启动。而且这个服务一次只能有一个服务。

通过查看此图像中的组,我尝试以group多种方式在“config.yml”文件中的标记中指定服务的名称,但无济于事。这是我尝试过的所有内容(您可以在我的提交中看到这些

  1. '服务:adp-ecs-服务'
  2. service:adp-ecs-service 他们俩(带引号和不带引号)都产生了以下错误:
An error occurred (InvalidParameterException) when calling the RunTask operation: Invalid namespace for group.
  1. adp-ecs-服务
  2. 服务

他们俩都在服务之外运行了任务(您可以在上图中看到 3 的输出。我什至也尝试了 1 和 2 的环境变量。


这是“/.circleci/config.yml”中“aws-ecs/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,但是在这个集群中运行了 2 个任务,一个在服务之外。

我想要的是,如果我在服务中运行一个新任务,它应该通过停止前一个图像从 ECR 中提取最新图像来启动一个容器。那么,如何正确指定服务的名称并完成此操作?

4

1 回答 1

1

简单地说 aws-ecs/run-task 不是你想要的。您需要将新任务定义部署到服务,而不是运行它。

如果您还没有,您正在寻找aws-ecs/deploy-service-updateupdate-task-definition

于 2020-11-01T04:33:52.737 回答