【问题标题】:Updating rather than replacing ECS Task Definition with CloudFormation使用 CloudFormation 更新而不是替换 ECS 任务定义
【发布时间】:2016-11-25 16:17:48
【问题描述】:

在 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'

【问题讨论】:

    标签: amazon-web-services docker amazon-cloudformation amazon-ecs


    【解决方案1】:

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

    家庭

    此任务定义注册到的族的名称。一种 家庭对任务定义的多个版本进行分组。

    CloudFormation 仍会将此视为“替换”,并将删除旧版本,但如果您使用 Family 参数,它不会创建新的任务定义。

    【讨论】:

    • 有没有人真的让 Family 像宣传的那样工作?即使我保持“家庭”不变,更新 ContainerDefinition 也会导致 CloudFormation 触发替换。
    • 你找到解决这个问题的方法了吗?
    【解决方案2】:

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

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

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多