我已根据 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网关中创建VPC链接。
3)创建新的API:
- 方法:获取
- 集成类型:VPC 链接
- 使用代理集成:True
- VPC 链接:${stageVariables.vpcLinkId}
- 端点 URL :“带有端口的我的 ec2 实例 URL”(例如:http://ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com:3000 http://ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com:3000)
- 创建了 API 资源。
4) 使用“部署 API”操作和新创建的阶段部署选定的 API。
5) 在“阶段变量”部分配置“vpcLinkId”。
现在,如果我点击“Invoke URL”,网页将显示“ {”message”:“Internal server error”} “。
Note:如果我将相同的 EC2 URL 与“集成类型:HTTP”一起使用,则“调用 URL”将起作用。同样不适用于 VPC 链接。
Error:
其他值得注意的点:
- 在具有安全策略的 EC2 实例中,将允许所有 TCP 端口。
- EC2实例是使用ECS / ECR(Docker容器)启动的。
- 从 API Gateway 阶段启用了 Cloud Watch 日志,但没有产生任何结果。
如果需要,我很乐意提供更多信息。
EDIT 1
根据 JNY 的 (jny) 输入,我已将 API 网关端点更改为 NLB,并将我的 EC2 实例添加为 NLB 中的目标。我仍然面临着同样的问题。下面的图片将显示我所做的所有配置。
负载均衡器配置:
负载均衡器目标组设置:
目标组端口设置:
- 在这里,我指定了 3000 作为端口来检查实例运行状况,因为我的应用程序(节点)侦听 3000 端口。
- 在安全策略中启用端口号80和3000。
API网关设置:
- 最后我将API网关的端点更改为NLB
相同的结果:
我仍然不确定我在这里犯了什么错误。
您做得正确,但也许会对某人有所帮助:
我的错误是在 api 网关中使用 HTTPS 作为端点 url。它必须是 HTTP。
Correct:
http://myLoadBalancer.elb.us-east-1.amazonaws.com
文本字段太短,无法显示整个网址,所以我没有看到它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)