一个集群上的 AWS ECS 多任务定义

Posted

技术标签:

【中文标题】一个集群上的 AWS ECS 多任务定义【英文标题】:AWS ECS multiple task definition on one cluster 【发布时间】:2019-06-08 06:04:41 【问题描述】:

我正在构建 aws 基础架构。

我也是 AWS 基础设施的新手。

我有三个 docker 容器,所以我必须将它部署到 ECS。

下面的代码是我开始服务的一步一步的。

aws ecs create-cluster --cluster-name test

ecs-cli configure --cluster test --region ap-northeast-2 --default-launch-type EC2 --config-name test

ecs-cli configure profile --access-key AWS_ACCESS_KEY --secret-key AWS_SECRET_KEY --profile-name test

ecs-cli up --keypair my_keypair --instance-role TestRole --instance-type t2.micro --cluster-config test --force

ecs-cli compose -f ecs-docker-compose.yml up --create-log-groups --cluster-config test

运行后,创建一个ec2实例,一个任务定义,一个集群。

并且任务定义连接到集群。

但我想知道,如何在一个集群上运行多个任务定义?

为了持续部署,我的场景在这里。 (假设alb已经连接)

    创建新任务定义

    将新任务定义连接到集群

    如果新任务定义连接成功,删除旧任务定义

总的来说我的问题。

    我的持续部署场景正确吗?

    如何将多个任务定义连接到一个集群?

谢谢。

【问题讨论】:

【参考方案1】:

您可以使用服务和滚动更新here 来做到这一点。

服务是任务和资源的定义,很像 Kubernetes 中的部署(如果您更熟悉的话)。您为要使用的服务指定任务定义版本,并最终更新该服务以使用不同的(假设为新的)任务定义版本/修订,这将触发对该任务定义的替换。

所以,您的原则是滚动更新使用的原则,它只是已经由服务处理。无需手动配置流程。

【讨论】:

以上是关于一个集群上的 AWS ECS 多任务定义的主要内容,如果未能解决你的问题,请参考以下文章

AWS 目标组在同一个 ECS 任务上注册 2 个目标?

AWS ECS 容量提供商

AWS ECS:ENV 变量超出任务定义 JSON

如何从 AWS Lambda 函数运行 ECS 任务?

AWS ECS Fargate - 任务未运行

如何在 AWS ECS 集群的服务中运行 AWS ECS 任务,而不是将服务从 Circle CI 的“aws-ecs/run-task”中排除