繁体   English   中英

使用 AWS API 网关和 VPC 链接时如何避免配置错误?

[英]How to avoid the configuration error while using AWS API Gateway with VPC Link?

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

我遵循的程序:

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

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

2) 使用新创建的 NLB 在 API 网关中创建 VPC 链接。

3)新建API:

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

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

现在,如果我点击“Invoke URL”,web 页面会显示“{"message": "Internal server error"}”。

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

错误:

在此处输入图像描述

其他值得注意的地方:

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

如果需要,我很乐意提供更多信息。

编辑 1

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

负载均衡器配置:

在此处输入图像描述

负载均衡器目标组设置:

在此处输入图像描述

目标组端口设置:

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

在此处输入图像描述

在此处输入图像描述

API 网关设置:

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

在此处输入图像描述

相同的结果:

在此处输入图像描述

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

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

您的 NLB 缺少端口 80 的 EC2 实例(在其安全组中)的入站权限。但由于 NLB 没有作为安全组(但确实有永久 IP),您将不得不使用其 IP 并将其直接添加到EC2 实例的安全组。 您可以通过以下方式找到 NLB 的 ip: https ://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-register-targets.html#target-security-groups。

你做对了,但也许它会帮助某人:

我的错是在 api 网关中对端点 url 使用 HTTPS。 它必须是 HTTP。

正确的:

http://myLoadBalancer.elb.us-east-1.amazonaws.com

文本字段太短,无法显示整个 url,所以我没有看到。

在为 NLB、EC2、ECS 等使用相同的端口后问题得到解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM