AWS ECS: ошибка свойства LoadBalancers в определении ресурса ECSService CloudFormation - PullRequest
0 голосов
/ 07 сентября 2018

Попытка создать службу ECS с использованием следующего определения ресурса Cloudformation:

  MyUIService:
    Type: AWS::ECS::Service
    Properties:
      Cluster: !ImportValue MyClusterName
      DesiredCount: 1
      LaunchType: EC2
      LoadBalancers:
        - !ImportValue ALBDemo
      Role: !Ref MyServiceRole
      ServiceName: my-ui-service
      ServiceRegistries:
       - arn:aws:servicediscovery:eu-west-1:2398942890842:service/srv-ohc098mdj55yesez7
      TaskDefinition: !ImportValue MyTaskArn

Однако происходит сбой со следующей ошибкой:

Значение свойства LoadBalancers должно быть списком объектов

Но Я определяю список (хотя и с одним элементом).

Список содержит экспорт арн ALB.

Какой точный синтаксис?

edit : Вот соответствующая документация , которая не соответствует ошибке:

LoadBalancers

Список объектов балансировщика нагрузки, связанных с кластером. Если вы укажете свойство Role, LoadBalancers должно быть указано как Что ж. Для получения информации о количестве балансировщиков нагрузки, которые вы можете указать для каждой услуги, см. Балансировка нагрузки на услуги в Amazon Elastic Контейнерный сервис Руководство разработчика. Обязательно: Условно Тип: список сервисов Amazon Elastic Container Service LoadBalancers

1 Ответ

0 голосов
/ 07 сентября 2018

Я вижу, что вы скопировали тот же шаблон из Шаблоны AWS .

MyUIService:
  Type: AWS::ECS::Service
  Properties:
    Cluster: !ImportValue MyClusterName
    DesiredCount: 1
    LaunchType: EC2
    LoadBalancers:
      - ContainerName: simple-app
        ContainerPort: '80'
        TargetGroupArn: !Ref 'ECSTG'
    Role: !Ref MyServiceRole
    ServiceName: my-ui-service
    ServiceRegistries:
     - arn:aws:servicediscovery:eu-west-1:2398942890842:service/srv-ohc098mdj55yesez7
    TaskDefinition: !ImportValue MyTaskArn

Обратите внимание, что LoadBalancers на самом деле напрямую не ссылается на балансировщик нагрузки. Он ссылается на целевую группу. Это довольно странно, учитывая названия, но если вы пройдете через веб-консоль, то придете к такому же выводу.

Если вы посмотрите документацию AWS :

ContainerName
The name of a container to use with the load balancer.

Required: Yes

Type: String


ContainerPort
The port number on the container to direct load balancer traffic to. Your container instances must allow ingress traffic on this port.

Required: Yes

Type: Integer

Это Обязательно , но вы никогда не сможете получить их, импортировав балансировщик нагрузки.

Если вы подумаете об этом, ссылаясь на целевую группу вместо балансировщика нагрузки, вы можете использовать один и тот же ALB для нескольких целевых групп, что оправдывает затраты. Таким образом, в заключение имеет смысл сослаться на целевую группу, но имя свойства действительно вводит в заблуждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...