AWS ECS:ECS服务Cloudformation模板中的严重错误

时间:2018-09-11 06:57:30

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

尝试通过以下具有适当导入的清单使用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指定“主机”或“桥”时,必须从任务定义中指定“ 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

2 个答案:

答案 0 :(得分:2)

这是AWS的一个错误,其中的cloudformation目前不支持 containerName containerPort 属性。这是 ServiceRegistry 的官方docs,这是cloudformation的docs。如果我没看错,则在发布服务发现时,它仅支持 awsvpc 网络模式,后来又添加了 bridge / host 。它解释了为什么我们会有这种差异。

暂时,您可以创建基本的ECS云信息,并使用CLI / API / SDK进行相应的更新,或者有时可以等待,以便AWS团队将对此提供支持。

答案 1 :(得分:0)

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

我已经进行了快速测试,看起来工作正常。