当专用子网已存在时,使用CDK(打字稿)将条目添加到路由表中

时间:2020-06-22 23:48:52

标签: typescript aws-cdk

是否可以在打字稿中使用CDK将条目添加到导入的专用子网的路由表中?我正在使用以下方式导入VPC:

import ec2 = require('@aws-cdk/aws-ec2');
vpc = ec2.Vpc.fromVpcAttributes(...)

fromVpcAttributes上的文档:https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ec2.Vpc.html#static-from-wbr-vpc-wbr-attributesscope-id-attrs),因此将其私有子网作为ISubnet数组导入。我想在每个专用子网的路由表中设置VPC对等目标/目的地,最常见的方法似乎是通过Subnet的{​​{1}}方法({{3 }}。这是在新建子网时起作用的,例如:https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ec2.Subnet.html#add-wbr-routeid-options,但是我的私有子网没有此方法,因为它们是作为addRoute导入的。有没有办法将这些子网导入为子网?还是在这种情况下添加条目的更好方法?

1 个答案:

答案 0 :(得分:3)

实际上,我今天陷入了类似的情况,我可以通过实例化新的CloudFormation Route资源来解决:

vpc.privateSubnets.forEach(({ routeTable: { routeTableId } }, index) => {
  new CfnRoute(stack, 'PrivateSubnetPeeringConnectionRoute' + index, {
    destinationCidrBlock: '10.0.0.0/16',
    routeTableId,
    vpcPeeringConnectionId: peeringConnection.ref,
  })
})

您将需要知道这些路由的对等连接的ID。在上面的示例中,它是在同一堆栈中创建时引用的:

const peeringConnection = new CfnVPCPeeringConnection(
  stack,
  'PeeringConnection',
  {
    peerVpcId: peerVpc.vpcId,
    vpcId: vpc.vpcId,
  }
)

希望这会有所帮助!