1

我有這樣的AWS EC2 :: :: SecurityGroup:如何將我的AWS :: EC2 :: DBSecurityGroup連接到VPC上下文中的AWS :: RDS :: DBSecurityGroup?

"InstanceSecurityGroup" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Properties" : { 
      "GroupDescription" : "Enable HTTP access on the configured port", 
      "VpcId" : { "Ref" : "VpcId" }, 
      "SecurityGroupIngress" : [ { 
       "IpProtocol" : "tcp", 
       "FromPort" : { "Ref" : "WebServerPort" }, 
       "ToPort" : { "Ref" : "WebServerPort" }, 
       "SourceSecurityGroupId" : { "Ref" : "LoadBalancerSecurityGroup" } 
      } ] 
     } 
    } 

,我有這樣的AWS :: RDS :: DBSecurityGroup

"DBSecurityGroup": { 
     "Type": "AWS::RDS::DBSecurityGroup", 
     "Properties": { 
      "DBSecurityGroupIngress": { "EC2SecurityGroupName": { "Ref": "InstanceSecurityGroup"} }, 
      "GroupDescription"  : "Frontend Access" 
     } 
    } 

當我試圖打開這個堆棧,我得到:

Invalid security group , groupId=, groupName= sg-a381fdc6. 

編輯1:讀多一點提示我需要AWS :: RDS :: DBSecurityGroup要與我的VPC相關聯,因此我改變THI S:

"DBSecurityGroup": { 
     "Type": "AWS::RDS::DBSecurityGroup", 
     "Properties": { 
      "EC2VpcId" : { "Ref" : "VpcId" }, 
      "DBSecurityGroupIngress": { "EC2SecurityGroupName": { "Ref": "InstanceSecurityGroup"} }, 
      "GroupDescription"  : "Frontend Access" 
     } 
    } 

,當我彈出堆棧我得到

請參閱文檔授權DBSecurityGroup進入。對於VPC,EC2SecurityGroupId是必需的。要僅授權此請求的源地址(並且沒有其他地址),請傳遞205.251.233.35/32作爲CIDRIP參數。

EC2SecurityGroupId是安全組的ID,而不是它的名稱,並且該ID被分配到我的控制之外,所以我不知道在這裏放置什麼值。

如何將我的AWS :: EC2 :: DBSecurityGroup連接到VPC上下文中的AWS :: RDS :: DBSecurityGroup?

回答

5

的問題是,你的{ "Ref": "InstanceSecurityGroup"}不持有唯一的名稱的身份證。要獲得對EC2SecurityGroupId的使用權,請使用Fn::GetAtt

您的DBSecurityGroup模板應該是這個樣子(注意如何參考已被替換FN :: GetAtt:

"DBSecurityGroup": { 
"Type": "AWS::RDS::DBSecurityGroup", 
"Properties": { 
    "EC2VpcId"    : { "Ref" : "VpcId" }, 
    "DBSecurityGroupIngress": { "EC2SecurityGroupId": { "Fn::GetAtt" : [ "InstanceSecurityGroup", "GroupId" ] } }, 
    "GroupDescription"  : "Frontend Access" 
} 
0

當您在VPC內部定義RDS安全組時,您必須通過group-id引用其他安全組,而不是通過組名來引用其他安全組。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group-rule.html

對於VPC DB安全組,使用EC2SecurityGroupId。對於EC2安全組,使用EC2SecurityGroupOwnerId,要麼EC2SecurityGroupName或EC2SecurityGroupId。」

您可以通過如下描述 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html

因此,「參考」功能獲得安全組ID,修改後的安全小組應

"DBSecurityGroup": { "Type": "AWS::RDS::DBSecurityGroup", "Properties": { "EC2VpcId" : { "Ref" : "VpcId" }, "DBSecurityGroupIngress": { "EC2SecurityGroupId": { "Ref": "InstanceSecurityGroup"} }, "GroupDescription" : "Frontend Access" } }