我想在 VPC 内的 AWS CDK 中创建 OpenSearch 域。我已经取得了一些进展,但我仍然遇到有关 CIDR 的问题。
var vpc = new Vpc(scope, "Vpc");
var subnet = new Subnet(scope, "Subnet", new SubnetProps
{
VpcId = vpc.VpcId,
CidrBlock = "10.0.1.0/24",
AvailabilityZone = "us-east-1a"
});
var domain = new Domain(scope, "Domain", new DomainProps
{
Vpc = vpc,
VpcSubnets = new SubnetSelection[]
{
new SubnetSelection
{
Subnets = new Subnet[]
{
subnet
}
}
},
SecurityGroups = new SecurityGroup[]
{
new SecurityGroup(scope, "SecurityGroup", new SecurityGroupProps
{
Vpc = vpc
})
},
// other property initializations are omitted
}
我收到的错误是CIDR“10.0.1.0/24”与另一个子网冲突
。如果我要创建一个只有一个子网的全新 Vpc
,怎么会出现这种情况呢?我假设可能有更多隐式创建的子网。我该如何解决这个问题?
目前我不关心多个可用区,因此我需要将域放置在单个子网内。
最佳答案
VPC 构造的 IpAddresses和 SubnetConfiguration props 允许您自定义 CIDR 范围和子网。
您的 VPC 构造函数未定义这些属性,因此将应用默认值(分配给 2 个子网的10.0.0.0/16
)。这些默认值与您手动创建的子网冲突。
请原谅我糟糕的 C#,但您需要一个像这样的 VPC 构造函数:
Vpc vpc = new Vpc(this, "VPC", new VpcProps {
IpAddresses = IpAddresses.Cidr("10.0.0.0/24")
MaxAzs = 1,
SubnetConfiguration = new ISubnetConfiguration[]
{
new SubnetConfiguration
{
SubnetType = SubnetType.PUBLIC,
Name = "Public"
}
}
});
请参阅Ip Address Management文档中的部分了解详细信息。
关于c# - AWS CDK : Vpc subnet conflicts with another subnet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75438614/