AWS CDK 如何引用刚刚使用 CDK 创建的子网

alf*_*alf 10 aws-cdk

我试图引用几个子网来创建 ec2 实例,但我有点卡住了。假设我有这个:

   const vpc = new Vpc(this, 'gwc-vpc', {
      cidr: "10.20.0.0/16",
      maxAzs: 3,
      subnetConfiguration: [
        {
          subnetType: SubnetType.PRIVATE,
          name: 'gossipSubnet',
          cidrMask: 24
        },
        {
          subnetType: SubnetType.PRIVATE,
          name: 'dbSubnet',
          cidrMask: 24
        },
        {
          subnetType: SubnetType.PUBLIC,
          name: 'extSubnet',
          cidrMask: 24
        }
      ]
    })
Run Code Online (Sandbox Code Playgroud)

例如,如何在 dbSubnet 中创建实例?更好的是,如果我想创建一个具有 2 个接口的 EC2 实例,每个接口位于不同的子网(dbSubnet 和 gossipSubnet)中,该怎么办?有任何想法吗?

谢谢!

小智 14

不确定这是否与此处相关,但您是否也可以使用内置程序来选择/定位您感兴趣的子网?

const vpc = new Vpc(this, 'ProductionVPC', {
            cidr: '10.10.0.0/16',
            enableDnsHostnames: true,
            enableDnsSupport: true,
            defaultInstanceTenancy: DefaultInstanceTenancy.DEFAULT,
            maxAzs: 2,
            natGateways: 1,
            subnetConfiguration: [
                {
                    cidrMask: 24,
                    name: 'Public',
                    subnetType: SubnetType.PUBLIC
                },
                {
                    cidrMask: 24,
                    name: 'Private - Application',
                    subnetType: SubnetType.PRIVATE,
                },
                {
                    cidrMask: 24,
                    name: 'Private - Database',
                    subnetType: SubnetType.ISOLATED,
                },
            ]
        });
        Tag.add(vpc, 'Name', 'Production VPC');

        const subnets = vpc.selectSubnets({subnetType: SubnetType.Public)).subnets;
Run Code Online (Sandbox Code Playgroud)


Max*_*erg 3

我建议使用一个应用程序来定义您的网络基础设施(vpc、子网、网关、安全组等)。然后您可以添加任意数量的与其交互的单独应用程序。

因此,您可以拥有一个包含上述内容的应用程序,用于构建 VPC 和子网,然后您应该导出 vpc 的 ID 以及您使用易读名称创建的所有子网

现在,您创建的在 VPC 中构建内容的任何其他应用程序都可以选择使用 simpleFn.importValue来获取它们需要的任何子网或 vpc id。或者他们可以使用Vpc.fromLookupcdk 应用程序获取可用的 Vpc 对象。拥有 Vpc 对象后,您可以使用它vpc.selectSubnets来获取要在应用程序中使用的子网。如果您想查看特定语言的任何示例,请告诉我。