【问题标题】:Invoke aws lambda from aws lambda in same vpc从同一 vpc 中的 aws lambda 调用 aws lambda
【发布时间】:2020-12-20 08:14:39
【问题描述】:

我假设我不是系统主义者,也不是网络工程师。 我正在尝试从同一个 vpc 中的另一个 lambda 函数调用 lambda 函数。我的网络配置是:

  • 1 个 vpc
  • 1 个公共子网和 1 个私有子网
  • 2 个路由表
  • 1 个互联网网关
  • 1 个安全组

我的 lambda:

  • 同时连接到子网和 sec 组;
  • 连接数据库并检索数据;
  • 调用 lambda 函数发送推送通知。

但是当第一个尝试调用第二个 aws 时返回超时异常。 我的想法是第一个“看不到”第​​二个。

我该如何解决这个问题?

谢谢

【问题讨论】:

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


    【解决方案1】:

    如果第一个 Lambda 函数被异步调用,它可以指定一个Destination用于在执行完成时发送事件。

    目标可以是另一个 AWS Lambda 函数。此调用由 AWS 服务触发,不需要从第一个 Lambda 函数访问 Internet(因此比使用 NAT 网关更便宜)。

    见:Configuring destinations for asynchronous invocation

    (我自己没有尝试过,但它应该工作!)

    【讨论】:

      【解决方案2】:

      这实际上是因为第一个 Lambda(配置为使用 VPC)没有出站互联网连接。

      确保您已将NAT GatewayNAT instance 附加到关联子网的路由表。

      如果您的函数需要访问互联网,请使用网络地址转换 (NAT)。将函数连接到公共子网不会为其提供 Internet 访问权限或公共 IP 地址。

      您需要删除公有子网的附件,因为无法为 Lambda 分配公有 IP,因此它无法使用 Internet 网关。

      【讨论】:

      • 是的,会收费
      • 所以唯一的免费解决方案是在第一个中包含第二个 lambda 代码,对吧?也许在单独的文件中有一个函数
      • 所以要么让您的 Lambda 不在 VPC 中(如果它不需要连接到 VPC 资源),或者是的,您需要合并代码
      • 我认为lambda需要VPC才能连接rds mysql
      • 我真的不明白为什么同一个vpc中的两个lambdas必须退出互联网并再次进入vpc才能互相调用
      猜你喜欢
      • 2019-09-23
      • 2020-04-22
      • 1970-01-01
      • 2017-05-24
      • 2020-09-11
      • 2017-02-08
      • 2016-02-04
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多