用于 cloudformation 启动模板的 cfn-init

gre*_*egn 8 amazon-ec2 amazon-web-services amazon-ecs aws-cloudformation

如何在 LaunchTemplate 中使用 cfn-init?这适用于 EC2 实例、自动扩展组中的 ECS 集群。

Metadata实例的部分在哪里,--resource传递给 cnf-init 的内容是什么?

LaunchTemplate:
  Type: AWS::EC2::LaunchTemplate
  Properties:
    LaunchTemplateName: !Sub ${AWS::StackName}-launch-template
    LaunchTemplateData: 
      SecurityGroups: 
        - !Ref DMZSecurityGroup
        - !Ref ECSSecurityGroup
      UserData:
        Fn::Base64:
          !Sub |
            #!/bin/bash -xe
            yum update -y aws-cfn-bootstrap
            /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource ??? --region ${AWS::Region}
            yum -y update
Run Code Online (Sandbox Code Playgroud)

我对元数据的最佳猜测产生了错误:

    Property validation failure: [Encountered unsupported properties in {/LaunchTemplateData}: [Metadata]]
Run Code Online (Sandbox Code Playgroud)

gre*_*egn 10

我在错误的嵌套级别有元数据,它应该与Type:和一起在最顶层,而Properties:不是在Properties:LaunchTemplateData:.

LaunchTemplate:
  Type: AWS::EC2::LaunchTemplate
  Metadata: 
    AWS::CloudFormation::Init: 
      config:
        files:
          /var/www/html/index2.html:
            content: TestString
  Properties:
    LaunchTemplateData: 
      SecurityGroupIds: 
        - !GetAtt DMZSecurityGroup.GroupId
        - !GetAtt ECSSecurityGroup.GroupId
      UserData:
        Fn::Base64:
          !Sub |
            #!/bin/bash -xe
            yum update -y aws-cfn-bootstrap
            /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource ECSLaunchTemplate --region ${AWS::Region}
            yum -y update
Run Code Online (Sandbox Code Playgroud)

  • 这真的有效吗?“--resource”与您的元数据所在的位置不匹配。除非您在“ECSLaunchTemplate”资源中有其他元数据。 (3认同)
  • 上面示例代码中应该是 `--resource LaunchTemplate` (2认同)