尝试通过CloudFormation创建SG和RDS时显示“无效的安全组”

时间:2018-05-29 08:06:30

标签: amazon-web-services amazon-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?

1 个答案:

答案 0 :(得分:2)

当您在!Ref AWS::EC2::SecurityGroup属性中执行VPCSecurityGroups时,将返回安全组的名称,而不是ID,这是VPCSecurityGroups属性所需的内容。请尝试使用- Fn::GetAtt: [ TestDBSecurityGroup, GroupId ]