【发布时间】:2018-12-10 15:42:34
【问题描述】:
我已根据 AWS 文档使用网络负载均衡器 (NLB) 创建了 VPC 链接,并将其与 API Gateway 资源/方法一起附加。但是在访问“Invoke URL”时会抛出“Internal Server Error”,并在测试时显示此错误:“Execution failed due to configuration error: There was an internal error while execution your request”。
我遵循的程序:
1) 创建网络负载均衡器:
- 负载平衡器方案:内部
- 负载平衡器协议/端口:TCP / 80
- 可用区:创建了 CIDR 为“10.0.0.0/16”的 VPC 和 CIDR 为“1XX.XX.0.0/16”的公共子网。
- 目标组:协议/端口/目标类型 - TCP/80/实例
- 没有目标注册。
- 推出 NLB。
2) 使用新创建的 NLB 在 API Gateway 中创建 VPC 链接。
3) 创建新的 API:
- 方法:获取
- 集成类型:VPC 链接
- 使用代理集成:是的
- 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”:“内部服务器错误”}。
注意:如果我使用与“集成类型:HTTP”相同的 EC2 url,则“调用 URL”有效。同样不适用于 VPC 链接。
错误:
其他值得注意的点:
- 在具有安全策略的 EC2 实例中将允许所有 TCP 端口。
- EC2 实例使用 ECS / ECR(Docker 容器)启动。
- 从 API Gateway 阶段启用 Cloud Watch 日志,但它什么也没产生。
如果需要,我很乐意提供更多信息。
编辑 1
根据 JNY 的 (jny) 输入,我已将 API 网关端点更改为 NLB,并将我的 EC2 实例添加为 NLB 中的目标。我仍然面临同样的问题。下面的图片将显示我所做的所有配置。
负载平衡器配置:
负载均衡器目标组设置:
目标组端口设置:
- 这里我指定了 3000 作为端口来检查实例运行状况,因为我的应用程序(节点)侦听 3000 端口。
- 在安全策略中启用了端口号 80 和 3000。
API 网关设置:
- 最后我将端点 API 网关更改为 NLB
结果相同:
我仍然不确定我在这里犯了什么错误。
【问题讨论】:
-
端点 url 应该是 NLB,而不是 ec2 实例。 NLB 应该配置 EC2 实例。
-
谢谢@jny。我仍然有同样的问题。请检查相同的编辑描述。
-
直接使用 curl 或 postman 调用 nlb url 会发生什么?
-
当我直接调用NLB时,它显示站点无法访问页面。但现在问题解决了。主要问题在于 NLB、目标组、EC2、ECS 容器的端口号。我在单个端口上创建了所有内容并创建了 VPC 的新鲜内容。现在它按预期工作。感谢您的回复。 NLB 端点有很大帮助。如果您将其发布为答案。我会接受的。
-
应该使用 NLB 中的什么属性?我尝试使用 dns 名称,每次点击 api-gateway 时都会收到 500 错误
标签: amazon-web-services amazon-ec2 aws-api-gateway amazon-vpc