【问题标题】:Retrieving main route table from Vpc construct with AWS CDK使用 AWS CDK 从 Vpc 构造中检索主路由表
【发布时间】:2022-07-21 17:02:17
【问题描述】:

我正在使用 AWS CDK 创建一个默认 VPC,并且我想使用名称标签更新 Vpc 构造创建的主路由表。下面是我如何创建 VPC 的示例代码:

from aws_cdk import aws_ec2 as ec2
from constructs import Construct

class Vpc(Construct):
    def __init__(self, scope: Construct, construct_id: str,  **kwargs):
        super().__init__(scope, construct_id)

        vpc = self.create_vpc()

        # TODO: Add Name tag to main VPC route table here

    def create_vpc(self) -> ec2.Vpc:
        vpc_name = "TEST-VPC"

        vpc = ec2.Vpc(
            self, 'VPC',
            cidr='10.10.0.0/24',
            vpc_name=vpc_name
        )

        return vpc

是否可以获取主路由表并标记它?

【问题讨论】:

  • 您能否阐明“主 VPC 路由表”的含义? CDK 将为每个创建的子网创建一个路由表(在本例中为 2 个公共子网和 2 个私有子网)。
  • @maafk 它将为每个子网创建一个路由表,但它会为标记为主路由表的 VPC 创建一个默认路由表。
  • @JeffCoe 你有没有找到解决方案?我也在尝试做类似的事情。
  • @bearrito - 不幸的是,我没有。我假设如果我们退回到不完全理想的 1 级结构,我们就能做到。
  • @JeffCoe 我实际上听取了我在其他地方阅读的一些建议,并决定使用各个子网表。有一些反对使用主路由表的论据。

标签: amazon-web-services amazon-cloudformation amazon-vpc aws-cdk


【解决方案1】:

也许这并不能严格回答这个问题,但对于需要使用 CDK 添加到子网的路由的任何人来说,它都是一个可行的解决方案。

const vpcPeerConnectionId = 'hard-coded-id'

this.vpc.privateSubnets.forEach((subnet, index) => {
  let routeTableId = subnet.routeTable.routeTableId
  new CfnRoute(this, 'PrivateSubnetPeeringConnectionRoute' + index, {
    destinationCidrBlock: props.env.dataSourceVpcCidr,
    routeTableId: routeTableId,
    vpcPeeringConnectionId: vpcPeerConnectionId
  })
})

示例使用 VPC 对等连接。对于其他用途,请参阅此文档:

https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.CfnRoute.html

【讨论】:

    猜你喜欢
    • 2022-12-13
    • 2021-03-20
    • 2016-03-09
    • 2019-07-21
    • 2014-04-09
    • 1970-01-01
    • 2022-06-23
    • 2020-09-07
    • 2021-03-25
    相关资源
    最近更新 更多