AWS execute-api端点请求超时/拨打TCP I / O超时

时间:2019-05-28 11:37:48

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

我想从VPC内的AWS Lambda访问公共Rest Api网关。

我已经创建了execute-api端点,并将443端口添加到了安全组。我也禁用了私人DNS名称,但仍然收到“端点请求超时” /拨打tcp 52.28。 :443:I / O超时错误。 我还测试了我想通过邮递员访问的API,该API可以正常工作。 我想念什么。

2 个答案:

答案 0 :(得分:0)

Lambda中的VPC默认没有公共互联网访问。

您拥有的一个选择是在部署的子网NAT gateway中设置一个Lambda,以使其具有Internet访问权限,从而可以访问公共REST API。更多内容-> Internet access for lambda functions

  

AWS Lambda使用您提供的VPC信息来设置ENI,这些ENI允许您的Lambda函数访问VPC资源。在您指定的子网内的IP地址范围内,为每个ENI分配了一个专用IP地址,但未分配任何公共IP地址。因此,如果您的Lambda功能需要Internet访问(例如,访问不具有VPC终端节点的AWS服务),则可以在VPC内配置NAT实例,也可以使用Amazon VPC NAT网关。有关更多信息,请参阅Amazon VPC用户指南中的NAT网关。您不能使用连接到VPC的Internet网关,因为这要求ENI具有公共IP地址。

或者您可以在这里-> Why can't I connect to my public API from an API Gateway VPC endpoint。它表明了

  

使用curl命令行工具测试您的私有API。在curl命令中,包括用于调用API的基本URL,以及Host标头或x-apigw-api-id标头。有关更多信息,请参见使用特定于端点的公共DNS主机名调用私有API。

     

调用API的基本URL包括DNS名称和阶段名称。看起来像这样:    https://vpceId.execute-api.awsRegion.vpce.amazonaws.com/stageName

     

注意:将vpceId替换为您复制的VPC端点ID。将awsRegion替换为私有API的AWS区域(例如us-east-1)。用您的API部署到的阶段名称替换stageName。

     

Host标头如下:

     

主机:apiId.execute-api.awsRegion.amazonaws.com

     

注意:用您复制的API ID替换apiId。将awsRegion替换为私有API的AWS区域(例如us-east-1)。

     

x-apigw-api-id标头看起来像这样:

     

x-apigw-api-id:apiId

     

注意:将apiId替换为您复制的API ID。

     

如果正确设置所有内容,则会收到200条响应代码。

答案 1 :(得分:0)

尝试使用<vpce-id>.execute-api.<region>.vpce.amazonaws.com访问API并在<api_id>.execute-api.<region>.amazonaws.com标头中传递Host