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

如何使用AWS CDK在应用负载均衡器前部署带弹性IP的网络负载均衡器

在AWS CDK中为Application Load Balancer配置带固定Elastic IP的前置Network Load Balancer

要给Application Load Balancer(ALB)提供固定公网IP,可通过在其前端部署绑定Elastic IP(EIP)的Network Load Balancer(NLB)实现,这是AWS官方推荐的方案。以下是TypeScript CDK实现代码,解决CDK API文档未明确覆盖的SubnetMappings配置问题:

实现步骤与代码示例

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

const app = new cdk.App();
const stack = new cdk.Stack(app, 'AlbWithStaticIpStack');

// 1. 创建或导入现有VPC
const vpc = ec2.Vpc.fromLookup(stack, 'ExistingVpc', {
  isDefault: false,
  vpcId: 'vpc-xxxxxxxxx' // 替换为你的VPC ID
});

// 2. 为每个要使用的AZ创建Elastic IP(需与子网同AZ)
const eips = vpc.publicSubnets.map((subnet, index) => {
  return new ec2.CfnEIP(stack, `Eip-${index}`, {
    domain: 'vpc'
  });
});

// 3. 创建绑定EIP的Network Load Balancer
const nlb = new elbv2.NetworkLoadBalancer(stack, 'StaticIpNlb', {
  vpc: vpc,
  internetFacing: true,
  crossZoneEnabled: true
});

// 为NLB的每个公网子网映射对应的EIP
vpc.publicSubnets.forEach((subnet, index) => {
  nlb.addSubnetMapping({
    subnetId: subnet.subnetId,
    allocationId: eips[index].attrAllocationId
  });
});

// 4. 创建后端Application Load Balancer
const alb = new elbv2.ApplicationLoadBalancer(stack, 'BackendAlb', {
  vpc: vpc,
  internetFacing: false // 仅允许NLB访问,无需直接公网暴露
});

// 5. 创建NLB的目标组,指向ALB的IP
const albTargetGroup = new elbv2.NetworkTargetGroup(stack, 'AlbTargetGroup', {
  vpc: vpc,
  port: 80, // 匹配ALB的监听端口
  targetType: elbv2.TargetType.IP,
  targets: [
    elbv2.IpTarget.fromIpAddresses(alb.loadBalancerDnsName) // 通过ALB的DNS解析获取IP
  ]
});

// 6. 配置NLB监听器,转发流量到ALB目标组
nlb.addListener('HttpListener', {
  port: 80,
  defaultTargetGroups: [albTargetGroup]
});

app.synth();

关键说明

  • EIP与子网的AZ匹配:每个EIP必须和对应的子网处于同一可用区,否则NLB无法正常绑定。
  • ALB的网络可见性:示例中ALB设为internetFacing: false,仅允许VPC内或NLB访问,增强安全性;若需同时保留ALB公网访问,可设为true。
  • 目标组类型:NLB的目标组需使用IP类型,因为ALB的DNS会解析为其私有IP(VPC内)或公网IP,作为NLB的目标。
  • CDK版本兼容:代码基于AWS CDK v2编写,确保你的项目使用v2版本依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:27:16