我一直在使用ALB,直到我意识到我无法将专用ALB连接到API网关...所以现在尝试NLB。

到目前为止,我有

  • 私有(private)NLB
  • API网关VPC链接以连接到NLB

  • 但是我不确定如何正确配置API网关。我做了:
  • 创建测试路线GET /test
  • 使用VPC链接,尝试使用代理和非代理类型
  • 但是我不确定应该为端点URL输入什么。现在,我做了类似的操作:http://dummydomain.com/api其中dummydomain.com是虚拟域,/api是我的状态检查网址,应该可以使用

  • 这是我第一次尝试NLB。有什么我想念的吗?

    当前,当我测试我的API网关功能时:我得到HTTP500
    {
      "message": "Internal server error"
    }
    

    日志:
    Execution log for request 2d5e2e51-b04c-11e8-b9fe-97b354c20146
    Tue Sep 04 14:09:45 UTC 2018 : Starting execution for request: 2d5e2e51-b04c-11e8-b9fe-97b354c20146
    Tue Sep 04 14:09:45 UTC 2018 : HTTP Method: GET, Resource Path: /test
    Tue Sep 04 14:09:45 UTC 2018 : Method request path: {}
    Tue Sep 04 14:09:45 UTC 2018 : Method request query string: {}
    Tue Sep 04 14:09:45 UTC 2018 : Method request headers: {}
    Tue Sep 04 14:09:45 UTC 2018 : Method request body before transformations:
    Tue Sep 04 14:09:45 UTC 2018 : Endpoint request URI: http://dummydomain.com/api
    Tue Sep 04 14:09:45 UTC 2018 : Endpoint request headers: {x-amzn-apigateway-api-id=4p76zcriuk, User-Agent=AmazonAPIGateway_4p76zcriuk, Host=dummydomain.com}
    Tue Sep 04 14:09:45 UTC 2018 : Endpoint request body after transformations:
    Tue Sep 04 14:09:45 UTC 2018 : Sending request to http://dummydomain.com/api
    Tue Sep 04 14:09:56 UTC 2018 : Execution failed due to configuration error: There was an internal error while executing your request
    Tue Sep 04 14:09:56 UTC 2018 : Method completed with status: 500
    

    我很好奇...目标群体有
  • 协议(protocol):TCP
  • 端口:80
  • 目标类型:IP
  • Healthcheck通过

  • 但是我的应用程序在端口3000上运行。但是运行状况检查通过了它也正确地反射(reflect)了我的应用程序在端口3000上运行

    amazon-web-services - 如何设置API网关与私有(private)NLB通话?-LMLPHP

    但是想知道端口80的部分是否有问题? NLB会将端口80的流量转换为端口3000吗?

    最佳答案

    端点URL有点骇人听闻。它强制您提供一个域(您可以使用任何域)。发出请求时,似乎剥夺了该域,并用您的VPC链接代替了该域。

    例如。

    http://dummydomain.com/api -> http://{NLB DNS}:80/api
    

    您还可以将{proxy}与API Gateway代理资源一起用作端点URL的一部分。

    例如。具有顶级代理资源的http://dummydomain.com/api/{proxy}将导致:
    {api gateway endpoint}/todo/1 -> http://{NLB DNS}:80/api/todo/1
    

    您可以将NLB端口配置为端点URL的一部分。

    例如。
    http://dummydomain.com:10001/api -> http://{NLB DNS}:10001/api
    

    这使您可以在NLB上包含指向不同目标组的多个监听器。

    为了进行故障排除,请通过在同一VPC上旋转EC2实例并从此处 curl 您的端点URL(用NLt DNS替换http://dummydomain.com)来测试您的(内部)NLB

    关于amazon-web-services - 如何设置API网关与私有(private)NLB通话?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52168194/

    10-11 09:04