Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何设置API网关与专用NLB对话?_Amazon Web Services_Elastic Load Balancer_Nlb - Fatal编程技术网

Amazon web services 如何设置API网关与专用NLB对话?

Amazon web services 如何设置API网关与专用NLB对话?,amazon-web-services,elastic-load-balancer,nlb,Amazon Web Services,Elastic Load Balancer,Nlb,我一直在使用ALB,直到我意识到我无法将专用ALB连接到API网关。。。所以我现在正在尝试NLB 到目前为止我有 私人NLB 连接到NLB的API网关VPC链接 但我不确定如何正确配置API网关。我做到了: 创建了一个测试路径GET/test 使用VPC链接、代理和非代理类型 但是我不确定我应该为端点URL放什么。现在我做了一些类似的事情:http://dummydomain.com/api其中dummydomain.com是一个虚拟域,/api是我的状态检查URL,应该可以工作 这是我

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

到目前为止我有

  • 私人NLB
  • 连接到NLB的API网关VPC链接
但我不确定如何正确配置API网关。我做到了:

  • 创建了一个测试路径
    GET/test
  • 使用VPC链接、代理和非代理类型
  • 但是我不确定我应该为端点URL放什么。现在我做了一些类似的事情:
    http://dummydomain.com/api
    其中
    dummydomain.com
    是一个虚拟域,
    /api
    是我的状态检查URL,应该可以工作
这是我第一次尝试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

我很好奇的事情。。。目标群体

  • 协议:TCP
  • 港口:80
  • 目标类型:IP
  • 健康检查通行证
但我的应用程序正在3000端口上运行。但是healthchecks通过了它也正确地反映了我的应用程序正在3000端口上运行


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

端点URL有点像黑客。它强制您提供一个域(您可以使用任何域)。当您提出请求时,该域似乎被剥离并替换为您的专有网络链接

例如

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

例如,
http://dummydomain.com/api/{proxy}
使用顶级代理资源将导致:

{api gateway endpoint}/todo/1 -> http://{NLB DNS}:80/api/todo/1
您可以将NLB端口配置为端点URL的一部分

例如

这允许您在NLB上包含指向不同目标组的多个侦听器


要进行故障排除,请在同一VPC上旋转一个EC2实例来测试(内部)NLB,并从那里卷曲端点URL(替换为NLB DNS)

我感到困惑。每当我使用API网关时,AWS本身已经在一个随机URL中公开了它。然后,如果您有一个域,您可以为它设置自定义域名,并创建api。API网关配置选项的右侧。为什么要将ALB/NLB添加到此任务中?API网关本质上已经由内部AWS LBs.@Lovato提供了高可用性。例如,您如何在ecs内调用您的API?直接调用它,因为DNS通常是解决的。然后,如果需要,我只使用令牌或APIKEY,就像任何外部呼叫一样。你也能回答这个问题吗?
{api gateway endpoint}/todo/1 -> http://{NLB DNS}:80/api/todo/1
http://dummydomain.com:10001/api -> http://{NLB DNS}:10001/api