Как получить идентификатор инстанса ECS, указанный в шаблоне формирования облака?

Я создаю шаблон формирования облака (формат YML) для своей службы ECS и застрял в целевой группе балансировщика нагрузки, он не смог подключиться к моему экземпляру ECS и пытался добавить Targetsобратившись к официальной документации AWS https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html

Ниже приведена моя целевая группа, и когда я несколько раз прекращаю запуск (который завершает) свой экземпляр, мой идентификатор экземпляра будет постоянно меняться и не будет статическим, как идентификаторы VPC или подсети, и как я могу динамически создавать значение в поле идентификатора целей?

TargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties: 
      Matcher: 
       HttpCode: "200"
      Name: "foo"
      Port: "8080"
      Protocol: "HTTP"
      Targets:
        Id: String // This I need to build dynamically
        Port: 8080
      TargetType: "instance"
      UnhealthyThresholdCount: 3
      VpcId: "vpc-79251d11"            

Примечание. Я попытался найти ресурсы EC2 и нашел этот https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2.html, но мне это не помогло. Также я использую ASG и LC для создания своего экземпляра ECS.

1 ответ

Решение

По материалам обсуждения в чате.

Поскольку экземпляры будут работать в группе автоматического масштабирования, нет необходимости указывать их идентификаторы непосредственно вTargetGroup ресурс типа AWS::ElasticLoadBalancingV2::TargetGroup.

Вместо TargetGroup ARN должен быть указан в AWS::AutoScaling::AutoScalingGroupресурс. В частности, параметр TargetGroupARNs:

Список имен ресурсов Amazon (ARN) целевых групп, которые нужно связать с группой Auto Scaling. Экземпляры регистрируются как цели в целевой группе, и трафик направляется в целевую группу.

Например, поскольку ваш AWS::ElasticLoadBalancingV2::TargetGroup ресурс называется TargetGroup, при определении вашей ASG вы должны сделать следующее (если тот же файл шаблона):

MyASG:
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties: 
      # only one parameter shown
      TargetGroupARNs: 
        - !Ref TargetGroup

Естественно, вы пропустите Targets параметр в вашем TargetGroup. Это сделаетMyASG автоматически регистрировать / отменять регистрацию ваших экземпляров в TargetGroup.

Другие вопросы по тегам