1

使用 CDK v1.1.0 我正在尝试创建一个面向 Internet 的应用程序负载均衡器。

当我ec2.vpc.fromLookup使用 my调用时vpcId,我得到了所有子网,但它们都被标记为PRIVATE子网。因此,我收到一个错误,即没有可用的公共子网。

如果我尝试使用ec2.vpc.fromVpcAttributes我的vpcId,availabilityZonesSubnetIDs,我会收到错误“无法读取未定义的属性 'selectSubnets'”。

我的子网的路由表:在子网中,我的 RouteTable 有两条路由:

  • 目标:10.140.0.0/16,目标:本地,状态为活动
  • 目标:0.0.0.0/0,目标:互联网网关,状态为活动

我不确定我的子网/VPC 配置是否不正确或 aws-cdk 是否存在错误。

我已经手动尝试使用公共子网创建应用程序负载均衡器,并且能够成功创建。所以我不能说我的子网配置不正确。

4

2 回答 2

1

花了我一段时间,但我想通了。对于我的公共子网,属性:Auto-assign public IPv4 address需要启用(设置为 YES)。

但这导致了一个奇怪的要求,我必须在所有受支持的 AZ 中拥有相同数量的公共和私有子网。我不明白为什么。否则我得到错误:
Not all subnets in VPC have the same AZs: ap-southeast-2a,ap-southeast-2b vs ap-southeast-2a,ap-southeast-2a,ap-southeast-2a,ap-southeast-2a,ap-southeast-2b,ap-southeast-2b,ap-southeast-2b,ap-southeast-2b,ap-southeast-2c,ap-southeast-2c,ap-southeast-2c

于 2019-07-25T05:54:44.493 回答
0

导入和控制子网分类方式的最简单方法是使用ec2.Vpc.fromVpcAttributes

// Import existing VPC
const vpc = ec2.Vpc.fromVpcAttributes(this, 'Vpc', {
  vpcId: 'vpc-xxxxxx',
  availabilityZones: ['eu-west-1a', 'eu-west-1b', 'eu-west-1c'],
  publicSubnetIds: ['subnet-xxxxxx', 'subnet-xxxxxx', 'subnet-xxxxxx'],
  privateSubnetIds: ['subnet-xxxxxx', 'subnet-xxxxxx', 'subnet-xxxxxx'],
});

子网顺序和长度很重要,并且必须与可用区匹配。

于 2019-07-24T08:34:56.840 回答