使用 CloudFormation 创建 EC2 实例和卷

使用 CloudFormation 创建 EC2 实例和卷

我正在尝试使用云形成部署两个 Windows Server 2019 EC2 实例,并为每个实例附加一个新卷(总共两个实例,两个卷)。部署时出现以下错误:

属性标签的值必须是 List 类型

根据我的研究,听起来我引用我尝试创建的卷的方式可能是问题所在,但不确定。

以下是我的一些模板,可供参考:

Resources:
  rpt04:
    Type: 'AWS::EC2::Instance'
    Properties:
      AvailabilityZone: us-west-1
      InstanceType: t2.large
      ImageId: ami-0cc5ea3dde5301489
      Tags:
        - Key: "Name"
          Value: "RPT-04 (W2K16)"
      KeyName: Key_2020
      SecurityGroupIds: 
        - sg-f2bcJmn9
      SubnetId: subnet-19234d70 
      BlockDeviceMappings:
        - DeviceName: /dev/sda1
          Ebs:
            VolumeSize: 100
            DeleteOnTermination: true
      Volumes:
        -
         Device: xvdb
         VolumeId: !Ref rpt04appvolume
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 357656a6-846b-4674-b06a-22901916ff91

   rpt04appvolume:
    Type: 'AWS::EC2::Volume'
    Properties:
      AvailabilityZone: us-west-1
      Size: 100
      VolumeType: gp2
      Tags:
         Key: Name
         Value: RPT-04-APP
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 3340c328-2324-42e5-bd11-b3c1d1f41a09

我将非常感激任何帮助/协助。我是 CloudFormation 的新手,在这方面遇到了困难。

答案1

rpt04appvolume缺少的-Tags

从此改变它:

   rpt04appvolume:
    Type: 'AWS::EC2::Volume'
    Properties:
      ...
      Tags:
         Key: Name
         Value: RPT-04-APP

更改为:

   rpt04appvolume:
    Type: 'AWS::EC2::Volume'
    Properties:
      ...
      Tags:
      -  Key: Name               # Note the '-'
         Value: RPT-04-APP

顺便说一句 -AvailabilityZone: us-west-1应该是美国西部-1A或者b或者其他什么。那美国西部-1独自一人区域名称不是一个可用区域姓名。

希望有帮助:)

答案2

以下是显示多个标签的示例。实例类型为 Linux,但 CF 中的 Windows 也一样。

我复制了一个我经常使用的模板,并复制了你的一些 ID。我的实际模板大量引用了我在其他模板中使用 !ImportValue 创建的资源以及在此模板中使用 !Ref 定义的内容

EC2Instance:
  Type: 'AWS::EC2::Instance'
  Properties:
    InstanceType: t3a.nano
    ImageId: ami-0970010f37c4f9c8d
    SubnetId:
      subnet-19234d70 
    SecurityGroupIds:
      - sg-f2bcJmn9
    AvailabilityZone: ap-southeast-2
    BlockDeviceMappings:
    - DeviceName: "/dev/xvda"
      Ebs:
        VolumeSize: '8'
        Encrypted: 'true'
    Tags:
      - Key: Name
        Value: Fred the VM
      - Key: environment
        Value: Production
      - Key: favorite_color
        Value: red

相关内容