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

时间:2018-07-02 11:59:11

标签: amazon-web-services amazon-ec2 aws-api-gateway aws-vpc aws-vpc-link

我已经根据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:

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

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

现在,如果我单击“调用URL”,则网页显示“ {”消息”:“内部服务器错误”}”。

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

错误:

enter image description here

其他值得注意的地方:

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

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

编辑1

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

负载均衡器配置:

enter image description here

负载均衡器目标组设置:

enter image description here

目标组端口设置:

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

enter image description here

enter image description here

API网关设置:

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

enter image description here

相同的结果

enter image description here

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

2 个答案:

答案 0 :(得分:0)

我也遇到500 Internal server error,然后我在EC2安全组中添加了入站规则,并允许HTTP与VPC子网的CIDR一起使用,现在我可以使用NLB访问API

答案 1 :(得分:0)

您的 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