属性 SecurityGroupIds 的值必须是字符串列表错误的类型,同时更新堆栈
Value of property SecurityGroupIds must be of type List of String error while updating stack
我在尝试使用以下代码更新堆栈时收到 ROLLBACK_COMPLETE。在事件中,我没有收到 "Value of property SecurityGroupIds must be of type List of String" 错误。请帮助我找到解决方案。
我的第一个堆栈代码:
Resources:
myvpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: true
EnableDnsHostnames: true
InstanceTenancy: default
Tags:
- Key: Name
Value: myvpc
myinternetgateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: mygtwy
mygatewayattach:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref myinternetgateway
VpcId: !Ref myvpc
mysubnet1:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: us-east-1a
VpcId: !Ref myvpc
CidrBlock: 10.0.1.0/24
MapPublicIpOnLaunch: true
Routetable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref myvpc
Route:
Type: AWS::EC2::Route
DependsOn: myinternetgateway
Properties:
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref myinternetgateway
RouteTableId: !Ref Routetable
SubnetARouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref Routetable
SubnetId: !Ref mysubnet1
在更新时,我添加了以下内容。在此期间,我收到了我之前提到的错误
Myec2:
Type: 'AWS::EC2::Instance'
Properties:
SecurityGroupIds:
- !Ref Mysecgroup
KeyName: !Ref KeyName
ImageId: ami-0922553b7b0369273
InstanceType: t2.micro
SubnetId: !Ref mysubnet1
Mysecgroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: Enable SSH access via port 22
VpcId: !Ref myvpc
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp: 0.0.0.0/0
When you specify an AWS::EC2::SecurityGroup type as an argument to the
Ref function, AWS CloudFormation returns the security group name or
the security group ID (for EC2-VPC security groups that are not in a
default VPC).
您的模板引用了安全组名称,而您应该引用组 ID。
Myec2:
Type: 'AWS::EC2::Instance'
Properties:
SecurityGroupIds:
- !GetAtt "Mysecgroup.GroupId"
KeyName: !Ref KeyName
ImageId: ami-0922553b7b0369273
InstanceType: t2.micro
SubnetId: !Ref mysubnet1
Mysecgroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: Enable SSH access via port 22
VpcId: !Ref myvpc
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp: 0.0.0.0/0
按名称引用安全组(而不是 SecurityGroupIds
)对我有用:
EC2SG1IKTA:
Type: 'AWS::EC2::SecurityGroup'
EC2I1K240:
Type: 'AWS::EC2::Instance'
Properties:
SecurityGroups:
- !Ref EC2SG1IKTA
我在尝试使用以下代码更新堆栈时收到 ROLLBACK_COMPLETE。在事件中,我没有收到 "Value of property SecurityGroupIds must be of type List of String" 错误。请帮助我找到解决方案。
我的第一个堆栈代码:
Resources:
myvpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: true
EnableDnsHostnames: true
InstanceTenancy: default
Tags:
- Key: Name
Value: myvpc
myinternetgateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: mygtwy
mygatewayattach:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref myinternetgateway
VpcId: !Ref myvpc
mysubnet1:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: us-east-1a
VpcId: !Ref myvpc
CidrBlock: 10.0.1.0/24
MapPublicIpOnLaunch: true
Routetable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref myvpc
Route:
Type: AWS::EC2::Route
DependsOn: myinternetgateway
Properties:
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref myinternetgateway
RouteTableId: !Ref Routetable
SubnetARouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref Routetable
SubnetId: !Ref mysubnet1
在更新时,我添加了以下内容。在此期间,我收到了我之前提到的错误
Myec2:
Type: 'AWS::EC2::Instance'
Properties:
SecurityGroupIds:
- !Ref Mysecgroup
KeyName: !Ref KeyName
ImageId: ami-0922553b7b0369273
InstanceType: t2.micro
SubnetId: !Ref mysubnet1
Mysecgroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: Enable SSH access via port 22
VpcId: !Ref myvpc
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp: 0.0.0.0/0
When you specify an AWS::EC2::SecurityGroup type as an argument to the Ref function, AWS CloudFormation returns the security group name or the security group ID (for EC2-VPC security groups that are not in a default VPC).
您的模板引用了安全组名称,而您应该引用组 ID。
Myec2:
Type: 'AWS::EC2::Instance'
Properties:
SecurityGroupIds:
- !GetAtt "Mysecgroup.GroupId"
KeyName: !Ref KeyName
ImageId: ami-0922553b7b0369273
InstanceType: t2.micro
SubnetId: !Ref mysubnet1
Mysecgroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: Enable SSH access via port 22
VpcId: !Ref myvpc
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp: 0.0.0.0/0
按名称引用安全组(而不是 SecurityGroupIds
)对我有用:
EC2SG1IKTA:
Type: 'AWS::EC2::SecurityGroup'
EC2I1K240:
Type: 'AWS::EC2::Instance'
Properties:
SecurityGroups:
- !Ref EC2SG1IKTA