使用 CloudFormation 更新而不是替换 ECS 任务定义

Updating rather than replacing ECS Task Definition with CloudFormation

在 CloudFormation 中更新 TaskDefinition 时,文档说发生了替换操作 - http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html

有没有办法让它成为一个新的修订版?我应该使用 family 参数吗?有任务定义限制吗?否则我会得到大量不活动的定义。

ContainerDefinitions:
  - Name: container
    Essential: 'true'
    Image: image:tag
    PortMappings:
      - ContainerPort: 80
        HostPort: 80
        Protocol: 'tcp'
    TaskRoleArn: 'arn:aws:iam::role'

是的,为了将您的更改放入同一任务定义的新修订版中,您应该使用 Family 参数。引用自 official documentation:

Family

The name of a family that this task definition is registered to. A family groups multiple versions of a task definition.

CloudFormation 仍会将其视为 "replacement" 并将删除旧修订版,但如果您使用 Family 参数,它不会创建新的任务定义。

实际上,参数 Family 如上所述不起作用,即使您通知它,任务定义也被替换了,但我在其他线程 (here) 中看到您可以使用以下 sintaxe 在您的模板,观察 UpdateReplacePolicy 参数

...
"Type": "AWS::ECS::TaskDefinition", 
"UpdateReplacePolicy": "Retain", 
"Properties": {
....