我有一个运行良好的 CloudFormation 脚本,只是我需要能够将我的 EC2 安全组添加到 RDS 安全组,以便 EC2 实例可以访问 RDS 实例上的 MySQL 数据库。
以下是创建 EC2 安全组的部分;
"WebSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "SSH Access, and complete access to ports 80 & 443.",
"SecurityGroupIngress" : [ {
"IpProtocol" : "tcp",
"FromPort" : "22",
"ToPort" : "22",
"CidrIp" : "My.IP.Add.Ress/32" },
{
"IpProtocol" : "tcp",
"FromPort" : "80",
"ToPort" : "80",
"CidrIp" : "0.0.0.0/0" },
{
"IpProtocol" : "tcp",
"FromPort" : "443",
"ToPort" : "443",
"CidrIp" : "0.0.0.0/0"
} ]
}
},
这是 RDS 安全组,尝试引用它;
"DBSecurityGroup" : {
"Type" : "AWS::RDS::DBSecurityGroup",
"Properties" : {
"GroupDescription" : "Access from the EC2 instance to MySQL.",
"DBSecurityGroupIngress" : [ {
"EC2SecurityGroupName" : { "Ref": "WebSecurityGroup" },
"EC2SecurityGroupId" : { "Ref" : "WebSecurityGroup" }
} ]
}
}
我们非常感谢任何意见或指点。
答案1
您的问题在错误消息中。在您的资源中,您为入口规则AWS::RDS::DBSecurityGroup
指定了和EC2SecurityGroupName
。对于 EC2 Classic,仅指定。EC2SecurityGroupId
EC2SecurityGroupName
编辑:新区域(例如欧盟中部(法兰克福))不支持 EC2-Classic。因此,您必须将 RDS 实例放在 VPC 中。这意味着,您需要创建 VPC 安全组而不是 RDS 安全组。