2

我的 VPC 中有几个私有子网,我正在尝试使用 typescript 导入它们,如下所示:

    vpc1 = ec2.Vpc.fromLookup(this, 'myVpc',{isDefault: false, vpcId:vpcId });
   
   // Iterate the private subnets
    const selection = vpc1.selectSubnets({
      subnetType: ec2.SubnetType.PRIVATE
    });
   
   for (const subnet of selection.subnets) {

   }

我设法导入了 VPC。但是,未列出私有子网。

如何才能做到这一点 ?

4

1 回答 1

1

将在 CDK 代码之外创建的 vpc 导入到 cdk 时,它将构建一个cdk.context.json包含 vpc 和子网信息的文件,并且selectSubnets只是从该上下文文件中构建的 vpc 对象中提取信息。这里有一些文档。

vpc = ec2.Vpc.fromLookup(this, 'myVpc',{isDefault: false, vpcId:vpcId });

子网类型由 CDK 根据多个标准确定

  1. aws-cdk:subnet-type如果 vpc 是由 CDK 本身创建的,则存在标签。
  2. 基于 Internet 网关 (IGW)、Nat 网关或无网关的存在。例如:如果有路由到 IGW,那么它将被视为 PUBLIC。

我们可以在 cdk.context 文件中观察 cdk 派生的类型。

在此处输入图像描述

如果我们不喜欢默认的子网类型或者我们需要特定的子网,在我们有太多私有子网并且需要导入特定子网的情况下,我们总是可以像这样导入它们:

const subnet1 = ec2.Subnet.fromSubnetId(this, 'private-subnet-1', 'subnet-1234345');
const subnet2 = ec2.Subnet.fromSubnetId(this, 'private-subnet-2', 'subnet-456789');
于 2021-03-02T13:00:09.303 回答