使用 AWS API Gateway 和 VPC Link 时如何避免配置错误?

Kir*_*ran 7 amazon-ec2 amazon-web-services amazon-vpc aws-api-gateway

我已经按照 AWS 文档使用网络负载均衡器 (NLB) 创建了 VPC 链接,并将其附加到 API 网关资源/方法中。但它在访问“调用 URL”时抛出“内部服务器错误”,并在测试时显示此错误:“由于配置错误,执行失败:执行您的请求时出现内部错误”。

我遵循的程序:

1) 创建网络负载均衡器:

  • 负载均衡器方案:内部
  • 负载均衡器协议/端口:TCP/80
  • 可用区:创建了具有 CIDR“10.0.0.0/16”的 VPC 和具有 CIDR“1XX.XX.0.0/16”的公共子网。
  • 目标组:协议/端口/目标类型 - TCP/80/实例
  • 没有目标注册。
  • 推出 NLB。

2) 使用新创建的 NLB 在 API Gateway 中创建 VPC Link。

3)创建新的API:

  • 方法:获取
  • 集成类型:VPC 链接
  • 使用代理集成:True
  • VPC 链接:${stageVariables.vpcLinkId}
  • 端点 URL:“我的带有端口的 ec2 实例 URL”(例如:http : //ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com : 3000
  • 已创建 API 资源。

4) 使用“部署 API”操作和新创建的阶段部署选定的 API。

5) 在“阶段变量”部分配置了“vpcLinkId”。

现在,如果我点击“调用 URL”,网页将显示“{"message": "Internal server error"} "。

注意:如果我使用与“集成类型:HTTP”相同的 EC2 url,则“调用 URL”有效。同样不适用于 VPC 链接。

错误:

在此处输入图片说明

其他值得注意的地方:

  1. 在具有安全策略的 EC2 实例中,将允许所有 TCP 端口。
  2. EC2 实例是使用 ECS/ECR(Docker 容器)启动的。
  3. 从 API Gateway 阶段启用 Cloud Watch 日志,但它什么也没产生。

如果需要,我很乐意提供其他信息。

编辑 1

基于 JNY 的 (jny) 输入,我已将 API 网关端点更改为 NLB,并将我的 EC2 实例添加为 NLB 中的目标。我仍然面临同样的问题。下面的图片将显示我所做的所有配置。

负载均衡器配置:

在此处输入图片说明

负载均衡器目标组设置:

在此处输入图片说明

目标组端口设置:

  1. 在这里,我提供了 3000 作为端口来检查实例运行状况,因为我的应用程序(节点)在 3000 端口上侦听。
  2. 在安全策略中启用端口号 80 和 3000。

在此处输入图片说明

在此处输入图片说明

API 网关设置:

  1. 最后我将端点 API 网关更改为 NLB

在此处输入图片说明

相同的结果:

在此处输入图片说明

我仍然不确定我在这里犯了什么错误。

小智 0

我还收到 500 内部服务器错误,然后我在 EC2 安全组中添加了入站规则,并允许使用 VPC 子网 CIDR 的 HTTP,现在我可以使用 NLB 访问 API