我制作了以下简单的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)
我无法弄清楚为什么会发生这样的错误..
答案 0 :(得分:2)
当您在!Ref AWS::EC2::SecurityGroup
属性中执行VPCSecurityGroups
时,将返回安全组的名称,而不是ID,这是VPCSecurityGroups
属性所需的内容。请尝试使用- Fn::GetAtt: [ TestDBSecurityGroup, GroupId ]
。