【问题标题】:Why can I call an on-VPC aws lambda from an off-VPC aws lambda but not vice versa?为什么我可以从 VPC 外的 aws lambda 调用 VPC 内的 aws lambda,反之则不行?
【发布时间】:2017-05-24 09:30:51
【问题描述】:

因此,如果我有两个 lambda,一个在私有 VPC 内,一个不在 VPC 上,则从公共 lambda 内部调用私有 lambda 可以,但我不能从私有 lambda 调用公共。

没有 NAT 设置。

这是为什么?看来理论上我应该不能从公众中调用私人。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-vpc


    【解决方案1】:

    为了触发 Lambda 函数,调用者只需拥有对 Invoke AWS API 的出站访问权限。调用的 Lambda 函数不必具有任何打开的入站端口或任何公共 Internet 访问权限。

    所以公有(非VPC,可以上网)Lambda函数可以调用InvokeAPI触发私有Lambda函数,但是私有VPC(不能上网)Lambda函数不能访问InvokeAPI触发任何 Lambda 函数。

    【讨论】:

    • 我想知道为什么 AWS 文档中没有明确说明这一点
    • 这个答案为我节省了几天的劳累
    • 私有VPC Lambda函数是否可以同步调用返回值,还是只能异步调用?
    【解决方案2】:

    在 VPC 内部,您需要一个 AWS VPC 接口终端节点 (https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint)。它允许在不通过 Internet 的情况下访问 AWS Lambda 服务。

    【讨论】:

    • 这是一个非常有用的提示!
    • 这对我不起作用。我在 VPC 中有一个 lambda。我还有用于 Lambda 和 SES 的 VPC 端点。从 VPC 内部的 lambda,我无法调用 SES 以及调用 VPC 外部的 Lambda。更不用说,VPC lambda 的安全组目前允许 0.0.0.0/0 流量(这将在稍后更改) - 但它仍然无法正常工作。
    • 您可能需要启用私有 dns(非常常见的问题)。此外,您可能需要查看日志以了解失败的实际原因。
    【解决方案3】:

    要解决此问题,您可以将 VPC 内的 lambda 配置为可以访问互联网。 This 文章解释了如何设置此配置。

    【讨论】:

    • NAT 是主要方式,但由于价格昂贵,我们都尽量避免使用它们。
    猜你喜欢
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2019-07-19
    • 2019-09-23
    • 1970-01-01
    相关资源
    最近更新 更多