Значение идентификатора свойства должно быть типа String — Ошибка в шаблоне CloudFormation

#amazon-web-services #amazon-cloudformation #amazon-elb

Вопрос:

Я использую приведенный ниже шаблон cloudformation для создания целевой группы для NLB. При выполнении шаблона cloudformation я получаю ошибку «Значение идентификатора свойства должно иметь тип String» из — за целевых строк: — Id: !Ref InstanceID. Я выбрал AWS::EC2::Экземпляр::Идентификатор в качестве списка, потому что хочу связать несколько экземпляров в этой целевой группе. Пожалуйста, кто-нибудь, помогите мне понять, в чем именно проблема.

 Parameters:
  InstanceID:
    Description: Please Select the Instance IDs
    Type: List<AWS::EC2::Instance::Id>
    Description: Select Instance ID to associate it with the Target Group
  VPC:
    Description: The VPC to deploy to the target group
    Type: AWS::EC2::VPC::Id
    ConstraintDescription: Select VPC ID for the Target Group

Resources:
    EC2TargetGroup:
      Type: AWS::ElasticLoadBalancingV2::TargetGroup
      Properties:                                                     
        HealthCheckIntervalSeconds: 30
        HealthCheckProtocol: TCP
        HealthCheckTimeoutSeconds: 10
        HealthyThresholdCount: 3        
        Name: NLBTargetGroupForEndpointService
        Port: 22
        Protocol: TCP        
        TargetType: instance
        Targets:
         - Id: !Ref InstanceID
        UnhealthyThresholdCount: 3
        VpcId: !Ref VPC
        Tags:
        - Key: Name
          Value: EC2TargetGroup
        - Key: Port
          Value: 22
        - Key: Protocol
          Value: TCP
 

Ответ №1:

Вы не можете этого сделать, так как цели-это объект https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html.

Вам нужно разработать свой собственный макрос cloudformation или пользовательский ресурс, если вы хотите динамическое заполнение целевых объектов.

Комментарии:

1. Он выдает ошибку «Значение целевых объектов свойств должно быть списком объектов» с изменением «Целевые объекты: !Ref InstanceID».

Ответ №2:

Глядя на !Ref InstanceID это , я думаю, что он получает многозначную строку вместо одного идентификатора экземпляра. Вы можете попробовать установить параметр InstanceID в строковый тип.

См. https://aws.amazon.com/premiumsupport/knowledge-center/multiple-values-list-parameter-cli/ что объясняет ссылку на группы безопасности.