【问题标题】:AWS ECS: Severe bug in ECS Service Cloudformation templateAWS ECS:ECS 服务 Cloudformation 模板中的严重错误
【发布时间】:2019-02-15 15:04:10
【问题描述】:

尝试通过以下具有适当导入的清单使用 cloudformation 创建 ECS 服务

 UIService:
        Type: AWS::ECS::Service
        Properties:
          Cluster: !ImportValue ECSClusterName
          DesiredCount: 1
          LaunchType: EC2
          LoadBalancers:
            - ContainerName: !ImportValue UIContainerName
              ContainerPort: '80'
              TargetGroupArn: !ImportValue UITGArn
          ServiceName: ui-service
          ServiceRegistries:
           - RegistryArn: arn:aws:servicediscovery:eu-west-1:944094092130:service/srv-oIclu40KCKM3esez7
          TaskDefinition: !ImportValue UITaskArn

此操作失败并显示以下消息:

为 networkMode 指定 'host' 或 'bridge' 时,必须从任务定义中指定 'containerName' 和 'containerPort' 的值。

但是,当我添加想要的值时(在我认为需要它们的 serviceregistry 属性中?)

  UIService:
    Type: AWS::ECS::Service
    Properties:
      Cluster: !ImportValue ECSClusterName
      DesiredCount: 1
      LaunchType: EC2
      LoadBalancers:
        - ContainerName: !ImportValue UIContainerName
          ContainerPort: '80'
          TargetGroupArn: !ImportValue UITGArn
      ServiceName: ui-service
      ServiceRegistries:
       - RegistryArn: arn:aws:servicediscovery:eu-west-1:944094092130:service/srv-oIclu40KCKM3esez7
         ContainerName: !ImportValue UIContainerName
         ContainerPort: '80'
      TaskDefinition: !ImportValue UITaskArn

...我得到以下失败:

遇到不支持的属性 ContainerName

【问题讨论】:

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


    【解决方案1】:

    这是来自 AWS 的错误,其中 cloudformation 目前不支持 containerNamecontainerPort 属性。这是 ServiceRegistry 的官方 docs,这是 cloudformation 的 docs。如果我没记错的话,在发布服务发现时,它只支持 awsvpc 网络模式,后来添加了 bridge/host。它解释了为什么我们会有这样的差异。

    目前,您可以创建基本的 ECS cloudformation,并使用 CLI/API/SDK 进行相应的更新,或者您可以等待 AWS 团队对其添加支持。

    更新:根据最新功能(2018 年 9 月 24 日推出),现在您可以在 ServiceRegistry 中指定 containerName 和 containerPort。

    【讨论】:

      【解决方案2】:

      根据最新的feature(今天介绍),现在您可以在ServiceRegistry 中指定containerName 和containerPort。

      我已经快速测试过,它似乎工作得很好。

      【讨论】:

      • 最好用更新来编辑接受的答案。
      猜你喜欢
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2019-03-24
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 2018-08-28
      相关资源
      最近更新 更多