【发布时间】:2026-02-09 18:35:01
【问题描述】:
我正在创建一个基本的 AWS CloudFormation 模板,其中包含一个 VPC、3 个安全组和 5 个 EC2 实例,我的安全组看起来像这样 -
{
"WebApplicationServerSG": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"VpcId": {
"Ref": "DevVpc"
},
"GroupDescription": "Enable HTTP, HTTPS and SSH access",
"Tags": [
{
"Key": "Name",
"Value": "WebApplicationServer Service Group"
}
],
"SecurityGroupIngress": [
{
"IpProtocol": "tcp",
"FromPort": "443",
"ToPort": "443",
"CidrIp": "0.0.0.0/0"
},
{
"IpProtocol": "tcp",
"FromPort": "80",
"ToPort": "80",
"CidrIp": "0.0.0.0/0"
},
{
"IpProtocol": "tcp",
"FromPort": "22",
"ToPort": "22",
"CidrIp": "0.0.0.0/0"
}
],
"SecurityGroupEgress": [
{
"IpProtocol": "tcp",
"FromPort": "443",
"ToPort": "443",
"CidrIp": "0.0.0.0/0"
},
{
"IpProtocol": "tcp",
"FromPort": "80",
"ToPort": "80",
"CidrIp": "0.0.0.0/0"
},
{
"IpProtocol": "tcp",
"FromPort": "22",
"ToPort": "22",
"CidrIp": "0.0.0.0/0"
}
]
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "a7977f00-48d6-488f-9e23-9bcd0785d399"
}
}
}
}
VPC 如下所示 -
{
"DevVpc": {
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": "172.31.0.0/16",
"EnableDnsSupport": "false",
"EnableDnsHostnames": "false",
"InstanceTenancy": "dedicated",
"Tags": [
{
"Key": "Name",
"Value": "DevStackVpc"
}
]
}
}
}
使用模板创建堆栈时出现错误 -
安全组 sg-31f91b5a 和子网 subnet-ea0aa3a7 属于 不同的网络。
11:13:01 UTC+0550 CREATE_FAILED AWS::EC2::Instance WebApplicationServer Security group sg-5147a53a and subnet subnet-ea0aa3a7 belong to different networks.
这里是完整模板的gist,任何帮助将不胜感激。
【问题讨论】:
-
您的 VPC 子网在哪里定义?
-
很可能问题出在子网定义中,可以肯定地说完整模板很有用。如果您想完全控制您的代码,请不要使用可视化编辑器 :)
-
我没有看到您的模板中声明的任何子网。如果您交叉引用错误中的子网 ID,您可能会发现它来自您在该区域中的 Default VPC,而不是此堆栈中的 VPC,并且您的实例将前往那里而不是此处。跨度>
-
@Michael-sqlbot 如果可以的话,我可以请求您提供一个样本。谢谢指点。
-
AFAIK,您需要创建EC2 subnets,然后您需要为RDS subnet groups 为RDS 实例声明两个或多个这些子网的逻辑集合。
标签: amazon-web-services amazon-ec2 amazon-cloudformation subnet aws-security-group