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

时间:2019-09-27 15:00:48

标签: 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
        }
      ]
    })

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

谢谢!

2 个答案:

答案 0 :(得分:1)

我建议您使用一个可以定义网络基础结构(vpc,子网,网关,安全组等)的应用程序。然后,您可以添加与其连接的任意数量的单独应用。

因此,您可以使用一个具有上述内容的应用程序来构建VPC和子网,然后从那里导出vpc的ID以及所创建的所有子网的名称,并带有易读的名称

现在,您创建的在VPC中生成内容的其他任何应用程序都可以选择使用简单的Fn.importValue来获取所需的任何子网或vpc ID。或者他们可以使用Vpc.fromLookup在cdk应用程序中获取可用的Vpc对象。拥有Vpc对象后,即可使用vpc.selectSubnets获取要在应用程序中使用的子网。如果您要查看特定语言的示例,请告诉我。

答案 1 :(得分:0)

不确定此处是否相关,但是您是否也不能使用内置功能选择/定位您感兴趣的子网?

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;