【问题标题】:Access Api Gateway API operation from VPC?从 VPC 访问 Api Gateway API 操作?
【发布时间】:2019-09-30 21:40:11
【问题描述】:

我试图弄清楚如何从在 VPC 中运行的 lambda 访问 Api Gateway service API(又名“管理 Amazon API Gateway”)。不是我不是试图在私有 API 中调用资源方法(我知道如何创建 execute-api VPC 接口端点),只是调用 AWS 服务方法 (get-api-key ,FWIW,使用 Python boto3 客户端)。希望这是有道理的,这里有如此多的“API”重载,很难清楚地表达这一点。当前尝试因超时而失败,因此我认为它与 VPC 相关,但我不确定如何提供访问权限。我看不到任何明显的端点类型会这样做。我已经看到对使用 NAT 网关获取额外 VPC 资源的引用,但我不清楚这将如何(或是否)适用。 VPC配置了NAT网关,Lambda的安全组允许所有出站流量,见下方配置。感谢任何建议。

NAT 网关配置

Lambda 网络配置

【问题讨论】:

  • vpc lambas 冷启动超过 10 秒,您是否将 lambda 超时增加到至少 30 秒?
  • 将 lambda 超时更改为 300 秒(最大值)对 boto3 对 apigw 的调用超时没有影响
  • 您遇到了哪个错误?您是否通过在 VPC 之外创建 lambda 以查看 VPC 是问题所在,从而复制了该问题?我在通过 lambda 直接访问 API 网关 API 时遇到了类似的问题,因为我使用的是旧版本的 lambda 运行时,它没有得到完全支持:stackoverflow.com/questions/54781774/…
  • 完全没有错误,lambda 本身在等待 get-api-key 请求完成 5 分钟后超时。

标签: aws-api-gateway amazon-vpc


【解决方案1】:

访问Amazon API Gateway Control Plane API endpoints 需要访问互联网。

如果没有 NAT 网关或其他类型的 NAT 设备,VPC 中的 Lambda 函数将无法访问 Internet。请参阅How do I give internet access to my Lambda function in a VPC? ... 或在 VPC 外部配置您的 Lambda 函数(如果它确实不需要位于 VPC 内部)。 Lambda 函数在 VPC 外部配置,可自动访问 Internet。

【讨论】:

  • 感谢网关问题的简洁总结。根据上面的更新描述,我们已经配置了一个 NAT 网关,并且 Lambda 网络配置似乎与这些设置相对应。
  • 您似乎配置错​​误。 NAT 网关必须位于 public 子网上,并且 Lambda 函数必须部署在 private 子网上,其子网 VPC 路由表中的默认路由指向 NAT 网关。
  • 啊。错过了最后一点。我会看到移动 lambda,需要了解还有什么可能会受到影响。谢谢!
  • 将我的 lambda 移动到私有、NAT 路由的子网后,一切都按预期工作。谢谢!
猜你喜欢
  • 2019-06-09
  • 2017-04-06
  • 1970-01-01
  • 2019-07-20
  • 2019-08-05
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多