尝试通过 CloudFormation 创建 SG 和 RDS 时显示“无效的安全组”
`Invalid security group` shown when tried to create an SG and RDS by CloudFormation
我制作了以下简单的 CloudFormation 模板。它尝试创建一个安全组和一个RDS,RDS使用创建的安全组作为其安全组配置。
AWSTemplateFormatVersion: 2010-09-09
Parameters:
TestDBMasterUserPassword:
Type: String
NoEcho: true
Resources:
TestDB:
Type: 'AWS::RDS::DBInstance'
Properties:
Engine: mysql
DBInstanceClass: db.t2.micro
AllocatedStorage: 20
MasterUsername: root
MasterUserPassword: !Ref TestDBMasterUserPassword
VPCSecurityGroups:
- !Ref TestDBSecurityGroup
TestDBSecurityGroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: Security Group for TestDB
从该模板创建堆栈会导致错误,如下所示:
16:58:43 UTC+0900 CREATE_FAILED AWS::RDS::DBInstance TestDB Invalid security group , groupId= inoue-test-stack-testdbsecuritygroup-10t6gvze4gs5k, groupName=. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterValue; Request ID: 16c7e4c5-9201-4dc7-b5b4-8f536c6b807d)
我不明白为什么会出现这样的错误..
问题:
- 这个简单的云形成模板有什么问题?
- 如何创建指定的安全组并将其分配给 CloudFormation 上的 RDS?
当您在 VPCSecurityGroups
属性 中执行 !Ref AWS::EC2::SecurityGroup
时,此 returns 安全组的名称而不是 ID,这就是 VPCSecurityGroups
属性 要求。请尝试使用 - Fn::GetAtt: [ TestDBSecurityGroup, GroupId ]
。
我制作了以下简单的 CloudFormation 模板。它尝试创建一个安全组和一个RDS,RDS使用创建的安全组作为其安全组配置。
AWSTemplateFormatVersion: 2010-09-09
Parameters:
TestDBMasterUserPassword:
Type: String
NoEcho: true
Resources:
TestDB:
Type: 'AWS::RDS::DBInstance'
Properties:
Engine: mysql
DBInstanceClass: db.t2.micro
AllocatedStorage: 20
MasterUsername: root
MasterUserPassword: !Ref TestDBMasterUserPassword
VPCSecurityGroups:
- !Ref TestDBSecurityGroup
TestDBSecurityGroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: Security Group for TestDB
从该模板创建堆栈会导致错误,如下所示:
16:58:43 UTC+0900 CREATE_FAILED AWS::RDS::DBInstance TestDB Invalid security group , groupId= inoue-test-stack-testdbsecuritygroup-10t6gvze4gs5k, groupName=. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterValue; Request ID: 16c7e4c5-9201-4dc7-b5b4-8f536c6b807d)
我不明白为什么会出现这样的错误..
问题:
- 这个简单的云形成模板有什么问题?
- 如何创建指定的安全组并将其分配给 CloudFormation 上的 RDS?
当您在 VPCSecurityGroups
属性 中执行 !Ref AWS::EC2::SecurityGroup
时,此 returns 安全组的名称而不是 ID,这就是 VPCSecurityGroups
属性 要求。请尝试使用 - Fn::GetAtt: [ TestDBSecurityGroup, GroupId ]
。