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

API Gateway访问Cloud Map端口5000服务遇500错误排查求助

问题诊断与解决方案

核心问题:集成URI配置错误

你当前的aws_apigatewayv2_integration中使用了Cloud Map服务的ARN作为integration_uri,这不符合HTTP_PROXY集成的要求。API Gateway HTTP_PROXY集成需要的是可解析的服务域名+端口,而非Cloud Map的ARN。Cloud Map的作用是让API Gateway能通过域名解析到ECS任务的IP,但集成URI必须直接指向服务的访问地址。

具体修复步骤

1. 修正集成URI配置

将integration_uri改为Cloud Map服务的域名(格式通常为{service-name}.{namespace}.local,可从Cloud Map控制台获取)加上服务端口。如果你的ECS服务现在用80端口,配置如下:

resource "aws_apigatewayv2_integration" "integration" {
  api_id                 = aws_apigatewayv2_api.api.id
  integration_type       = "HTTP_PROXY"
  # 替换为你的Cloud Map服务域名+端口
  integration_uri        = "http://ecs-discovery-service.your-namespace.local:80"
  integration_method     = "ANY"
  connection_type        = "VPC_LINK"
  connection_id          = aws_apigatewayv2_vpc_link.vpc_link.id
  payload_format_version = "1.0"
  # 启用DNS缓存优化服务发现性能
  enable_dns_cache       = true
}

2. 确保安全组规则正确

  • VPC Link安全组:需要允许出站流量到ECS服务所在安全组的目标端口(80或5000)。
  • ECS服务安全组:需要允许来自VPC Link安全组的入站流量到服务端口。

示例安全组Terraform配置:

# VPC Link安全组
resource "aws_security_group" "vpc_link_sg" {
  name        = "vpc-link-sg"
  description = "Allow outbound to ECS service"
  vpc_id      = var.vpc_id

  egress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = [var.ecs_service_subnet_cidrs] # ECS服务所在子网的CIDR
  }
}

# ECS服务安全组
resource "aws_security_group" "ecs_service_sg" {
  name        = "ecs-service-sg"
  description = "Allow inbound from VPC Link"
  vpc_id      = var.vpc_id

  ingress {
    from_port       = 80
    to_port         = 80
    protocol        = "tcp"
    security_groups = [aws_security_group.vpc_link_sg.id]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

更新VPC Link的安全组引用:

resource "aws_apigatewayv2_vpc_link" "vpc_link" {
  name               = "test"
  subnet_ids         = var.ecs_service_subnet_ids
  security_group_ids = [aws_security_group.vpc_link_sg.id]
}

3. 补充检查点

  • 验证Cloud Map DNS解析:在VPC内的EC2实例执行nslookup ecs-discovery-service.your-namespace.local,确认能解析到ECS任务的IP。
  • 启用API Gateway日志:开启访问日志功能,查看具体错误详情(如DNS解析失败、连接拒绝等),进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:05:17