You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS CDK中创建VPC接口终端时指定带固定IP的私有子网

解决AWS CDK创建Interface VPC Endpoint时指定带固定IP的子网问题

1. 仅指定特定子网(不设置固定IP)

如果只是需要选择特定子网(比如按ID、标签筛选),可以通过vpc.selectSubnets()构造SubnetSelection对象,传入subnets参数:

// 按子网ID筛选目标子网
const targetSubnets = vpc.selectSubnets({
  subnetIds: ['subnet-0123456789abcdef0', 'subnet-0abcdef1234567890'] // 替换为你的子网ID
});

// 也可按标签筛选(示例:匹配标签Key为"Purpose"、Value为"VPCE-FixedIP"的子网)
// const targetSubnets = vpc.selectSubnets({
//   tags: { Purpose: 'VPCE-FixedIP' }
// });

const vpce = vpc.addInterfaceEndpoint('interface-endpoint', {
  service: InterfaceVpcEndpointAwsService.S3,
  securityGroups: [securityGroup],
  privateDnsEnabled: false,
  subnets: targetSubnets // 指定筛选后的子网
});
Tags.of(vpce).add('vpceName', vpceName);

2. 指定子网并配置固定IP

由于AWS CDK高层的addInterfaceEndpoint方法未暴露固定IP配置参数,需要使用底层的CfnVPCEndpoint资源实现,对应你在UI中看到的指定IP选项:

import * as ec2 from 'aws-cdk-lib/aws-ec2';

// 定义要使用的子网与对应固定IP(IP需在子网CIDR范围内且未被占用)
const subnetIpMap = [
  { subnetId: 'subnet-0123456789abcdef0', privateIp: '10.0.1.10' },
  { subnetId: 'subnet-0abcdef1234567890', privateIp: '10.0.2.10' }
];

// 创建底层CloudFormation VPCE资源
const cfnVpce = new ec2.CfnVPCEndpoint(this, 'InterfaceEndpointWithFixedIp', {
  vpcId: vpc.vpcId,
  serviceName: InterfaceVpcEndpointAwsService.S3.serviceName,
  vpcEndpointType: 'Interface',
  securityGroupIds: [securityGroup.securityGroupId],
  privateDnsEnabled: false,
  // 子网与固定IP需一一对应
  subnetIds: subnetIpMap.map(item => item.subnetId),
  privateIpAddresses: subnetIpMap.map(item => item.privateIp)
});

// 添加标签
Tags.of(cfnVpce).add('vpceName', vpceName);

内容的提问来源于stack exchange,提问作者Ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:08:17