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

如何配置API Gateway(REST API)到私有NLB/ALB至Fargate?遇部署断路器触发错误

ECS Fargate部署问题+私有负载链路配置解决方案

一、ECS部署断路器触发的排查修复

断路器触发核心是任务启动失败或健康检查不通过,结合你的私有子网环境,重点查这些:

  • 子网路由:私有子网必须配置NAT网关(Fargate任务需要拉取镜像、访问AWS服务),检查路由表是否指向NAT网关,NAT网关要放在公有子网(没有的话先创建)。
  • 健康检查配置:Fargate任务健康检查要对应.NET API的存活接口,比如设为HTTP:8080/health,确保容器内API确实监听8080端口,且安全组允许ALB访问容器8080端口。
  • 镜像拉取权限:ECS任务执行角色要有AmazonEC2ContainerRegistryReadOnly权限,ECR镜像仓库权限要开放给该角色,保证私有子网内任务能拉取到镜像。
  • 安全组规则:
    • NLB安全组:允许API Gateway的VPC端点(私有集成场景)或公网(公网API Gateway场景)访问80端口;同时允许ALB所在子网访问NLB的80端口。
    • ALB安全组:允许NLB访问80端口;允许Fargate任务所在子网访问8080端口。
    • Fargate任务安全组:允许ALB访问8080端口。

二、私有负载链路+ALB路径路由配置

1. API Gateway对接私有NLB

  • 创建REST API,使用私有集成关联NLB,选择你的VPC和NLB实例,指定80端口。
  • 必须给API Gateway配置VPC端点(放在你的私有子网内),否则API Gateway无法访问私有NLB。

2. 私有NLB配置

  • 目标组类型选IP,添加两个可用区里ALB的私有IP,端口设为80。
  • NLB监听80端口,流量转发到该目标组。

3. 私有ALB路径路由

  • 按业务路径创建多个目标组,每个目标组指向Fargate任务的8080端口(选IP类型,开启ECS服务自动注册任务IP)。
  • ALB监听80端口,添加路由规则:
    • 路径/api/v1/users/* → 转发到用户服务目标组
    • 路径/api/v1/orders/* → 转发到订单服务目标组
    • 默认路径/* → 转发到默认API目标组

4. ECS Fargate服务配置

  • 任务定义里容器端口映射设为8080:8080(对应.NET API监听的容器内端口)。
  • 服务配置选择两个私有子网,关联ALB的目标组,开启自动注册。
  • 任务执行角色和任务角色权限要齐全,能访问ECR、CloudWatch等必要服务。

三、.NET Minimal API适配示例

确保API监听正确端口,带健康检查端点:

var builder = WebApplication.CreateBuilder(args);

// 配置Kestrel监听容器内8080端口
builder.WebHost.ConfigureKestrel(options =>
{
    options.ListenAnyIP(8080);
});

var app = builder.Build();

// 健康检查端点,对应Fargate健康检查配置
app.MapGet("/health", () => Results.Ok("Healthy"));

// 业务接口示例
app.MapGet("/api/v1/users/{id}", (int id) => 
    Results.Ok(new { UserId = id, UserName = "Demo User" })
);

app.Run();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:17:03