我正在尝试使用云形成部署两个 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