【问题标题】:associate custom Elastic IP to NAT Gateway with AWS CDK将自定义弹性 IP 与 NAT 网关与 AWS CDK 相关联
【发布时间】:2020-12-23 14:41:57
【问题描述】:

在为此苦苦挣扎了几个小时之后,这是我的问题。我正在使用 CDK 以目前最简单的形式创建 VPC:

let vpc = new Vpc(this, "myVpc", {maxAzs: 1});

这为我提供了一个公共子网和一个包含所有网关(互联网和 NAT)的私有子网。我的 NAT 网关从 AWS 池中获得了一个公共 EIP。当然,当我销毁堆栈并重新创建它时,我会从 AWS 获得一个新的 EIP,但 我不想要。

我想要的是: 在我的 CDK 项目之外创建一个弹性 IP(通过 CLI 或 AWS 控制台手动)并将其附加到我的 NAT GW,这样即使在销毁堆栈之后,我也可以将我的(外部)EIP 重新附加到“新”NAT GW .

因此必须有一种方法让 VPC 自动创建 AWS::EC2::NatGateway,但手动创建正确的 EIP 关联,然后将其附加到 VPC/公共子网。几乎与我可以显式定义子网并将它们与 VPC 而不是 CDK 构造魔法相关联的方式相同。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-vpc aws-cdk elastic-ip


    【解决方案1】:

    你可以参考这里https://github.com/aws/aws-cdk/issues/4067在最后一个帖子。

    您可以定义 EIP 分配,然后在 CDK 部署时将其分配到 Nat Gateway。

    当然,你必须先手动创建EIP。

    【讨论】:

      【解决方案2】:

      对于 Java CDK,您可以使用 natGatewayProvider(NatProvider.gateway(NatGatewayProps.builder().eipAllocationIds(Collections.singletonList("eipalloc-id")).build()))

      使用手动配置的 EIP 为 NAT 创建 VPC 的完整示例:

      Vpc.Builder.create(this, "vpc")
              .natGateways(1)
              .natGatewayProvider(NatProvider.gateway(NatGatewayProps.builder().eipAllocationIds(Collections.singletonList("eipalloc-id")).build()))
              .maxAzs(3)
              .subnetConfiguration(
                  Arrays.asList(
                      SubnetConfiguration.builder()
                          .subnetType(SubnetType.PRIVATE)
                          .cidrMask(24)
                          .name("mc")
                          .build(),
                      SubnetConfiguration.builder()
                          .subnetType(SubnetType.PUBLIC)
                          .cidrMask(24)
                          .name("Ingress")
                          .build(),
                      SubnetConfiguration.builder()
                          .subnetType(SubnetType.ISOLATED)
                          .cidrMask(24)
                          .name("app")
                          .build()
                  )
              )
              .cidr("10.0.0.0/16").build();
      

      其他语言请查看https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ec2.Vpc.html#natgatewayprovider

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-23
        • 1970-01-01
        • 2016-12-06
        • 1970-01-01
        • 2018-06-02
        • 2016-08-18
        • 1970-01-01
        相关资源
        最近更新 更多