如何通过AWS CDK创建无负载均衡器的Fargate Service
如何通过AWS CDK创建无负载均衡器的Fargate Service
不需要依赖ecsPatterns中的封装模式(这类模式默认会自动创建负载均衡器),直接使用AWS CDK的底层ecs.FargateService构造器即可实现,它不会强制关联负载均衡器,配置更灵活。
核心实现步骤(以TypeScript为例)
- 准备基础资源(VPC、ECS集群)
- 定义Fargate任务定义并添加容器
- 创建Fargate Service时跳过负载均衡器相关配置
import * as cdk from 'aws-cdk-lib'; import * as ecs from 'aws-cdk-lib/aws-ecs'; import * as ec2 from 'aws-cdk-lib/aws-ec2'; const app = new cdk.App(); const stack = new cdk.Stack(app, 'FargateNoLBStack'); // 创建VPC(若已有可用VPC,可直接通过ec2.Vpc.fromLookup引用) const vpc = new ec2.Vpc(stack, 'FargateVpc', { maxAzs: 2, }); // 创建ECS集群 const cluster = new ecs.Cluster(stack, 'FargateCluster', { vpc: vpc, }); // 定义Fargate任务定义 const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef', { memoryLimitMiB: 512, cpu: 256, }); // 向任务定义添加容器(替换为你的业务镜像和端口) taskDefinition.addContainer('BusinessContainer', { image: ecs.ContainerImage.fromRegistry('nginx'), portMappings: [{ containerPort: 80 }], }); // 创建无负载均衡器的Fargate Service const fargateService = new ecs.FargateService(stack, 'FargateService', { cluster: cluster, taskDefinition: taskDefinition, desiredCount: 1, // 无需配置loadBalancer属性,即可避免创建负载均衡器 // 如需服务发现,可添加serviceDiscovery配置,否则省略 }); app.synth();
关键注意事项
- 不要使用
ecsPatterns下的ApplicationLoadBalancedFargateService或NetworkLoadBalancedFargateService,这些封装类会自动创建并绑定负载均衡器 ecs.FargateService是底层构造器,完全由开发者控制所有配置,包括是否启用负载均衡、服务发现、自动扩缩容等
内容的提问来源于stack exchange,提问作者Sushant Adhikari
相关产品推荐
相关产品推荐

