VPC中AWS Lambda函数中的外部调用



我有一个AWS Lambda函数:

  • 检查数据库并创建通知
  • 将这些通知发送到Firebase

由于数据库交互,该功能需要在VPC上。我遵循本指南为函数提供了一种连接到Firebase的方法。如何为连接到亚马逊专有网络的Lambda功能提供互联网访问权限?。它奏效了。

Lambda函数还与AWS S3 Bucket交互,因为该函数是使用带有slim_handler = True的Zappa部署的,这使得Zappa向Lambda上传一个小处理程序,并在运行时从S3加载实际项目。

有些通知已发送,有些则未发送。当我检查日志时,对于成功交付的通知,我看到以下内容:

Starting new HTTPS connection (1): fcm.googleapis.com:443
...
https://fcm.googleapis.com:443 "POST /fcm/send HTTP/1.1" 200 None

对于其他未送达的通知,它会记录:

Starting new HTTP connection (1): 169.254.169.254:80
...
Task timed out after 180.01 seconds
Instancing..

AWS Lambda函数有一个重试策略,由于超时,该函数运行3次,通知在数据库上重复三次(但不发送到Firebase(。

为什么HTTP连接从169.254.169.254:80开始,而不是在正确的端点fcm.googleapis.com:443上?

我不确定这是否相关,但Zappa会自动设置一个运行4分钟的事件,以保持Lambda功能的热度。

为什么连接到Firebase有时有效,有时无效?

听起来Lambda函数配置运行的某些子网没有到NAT实例或NAT网关的路由。如果您为Lambda函数配置的任何子网都是公用子网,那么您将看到此问题。

相关内容

  • 没有找到相关文章

最新更新