如何使用AWS CDK获取已存在Transit Gateway的属性及ID
跨账号共享Transit Gateway ID的CDK获取方案
你可以根据实际场景选择以下任意一种方式获取ID:
- 方案1:通过栈参数/上下文变量传入
将提前获取到的共享Transit Gateway ID作为CDK栈参数或者cdk.json的上下文变量传入,适用于Transit Gateway ID固定不变的场景。
示例代码(栈参数方式):
const tgwId = new cdk.CfnParameter(this, 'TransitGatewayId', { type: 'String', description: '跨账号共享的Transit Gateway资源ID' }).valueAsString;
示例代码(上下文变量方式):
const tgwId = this.node.tryGetContext('transitGatewayId');
- 方案2:从SSM参数存储读取
提前在部署账号对应区域的AWS Systems Manager参数存储中存储Transit Gateway ID,CDK部署时直接读取即可,适合多栈共享同一资源ID的场景。
示例代码:
import * as ssm from 'aws-cdk-lib/aws-ssm'; const tgwId = ssm.StringParameter.valueForStringParameter( this, '/shared/resources/transit-gateway/id' // 替换为你实际存储的参数路径 );
- 方案3:动态查询获取
如果需要CDK部署时自动获取ID,可使用EC2模块的lookup方法通过标签等唯一属性查询Transit Gateway资源。注意你的CDK执行角色需要拥有ec2:DescribeTransitGateways权限,且RAM共享的Transit Gateway已经在当前账号完成接受、处于可用状态。
示例代码:
import * as ec2 from 'aws-cdk-lib/aws-ec2'; const sharedTgw = ec2.TransitGateway.fromLookup(this, 'SharedTGW', { tags: { 'Name': 'CrossAccount-Shared-TGW' // 替换为你的Transit Gateway实际唯一标签 } }); const tgwId = sharedTgw.transitGatewayId;
获取到tgwId后,即可直接传入CfnTransitGatewayVpcAttachment的构造参数中使用。
内容的提问来源于stack exchange,提问作者Mike Marseglia
相关产品推荐
相关产品推荐

