我想从 Lambda@Edge 卸载一些功能以加快响应时间。这意味着在我的 Lambda@Edge 中触发另一个 Lambda 函数。
Lambda@Edge 将应用程序分布在所有区域,因此当发出请求时,它将在距离请求者最近的区域执行应用程序。
我当前的解决方案是在所有区域创建一个具有相同主题名称的 SNS,让 us-east-1 中的 SQS 监听所有这些 SNS 主题,并使用 Lambda 函数监听 SQS。
然而,在每个地区创建一个SNS 维护起来相当麻烦。
关于如何在 Lambda@Edge 中触发另一个 Lambda 函数,还有其他建议吗?
谢谢!
amazon-sqs amazon-web-services amazon-sns aws-lambda aws-lambda-edge
目前,我有一个AWS SQS作为我的AWS Lambda函数的触发器。
我想实施长时间轮询以降低成本,因为我已经用完了每月免费套餐的70%,其中大部分来自空收据。
我尝试通过将queue属性更改为ReceiveMessageWaitTimeSeconds来设置长轮询20 seconds:
但是,这似乎并没有减少空接收的数量,在2:00-3:00之间的11/19更改了设置。

根据AWS文档,WaitTimeSeconds优先级高于队列属性ReceiveMessageWaitTimeSeconds
通过以下两种方式之一将ReceiveMessage请求的WaitTimeSeconds参数设置为0时,将发生短轮询:
- ReceiveMessage调用将WaitTimeSeconds设置为0。
- ReceiveMessage调用未设置WaitTimeSeconds,但是队列属性ReceiveMessageWaitTimeSeconds设置为0。
注意
对于ReceiveMessage操作的WaitTimeSeconds参数,在1到20之间设置的值优先于为队列属性ReceiveMessageWaitTimeSeconds设置的任何值。
由于AWS Lambda正在接收SQS请求,因此我认为WaitTimeSeconds无法对其进行配置。
为什么我的长轮询配置在这种情况下不起作用?我是误解了什么,还是配置错误?
谢谢!
AWS 文档指出 Aurora Serverless DB 不能拥有公共 IP 地址:
您无法为 Aurora Serverless 数据库集群提供公共 IP 地址。您只能从基于 Amazon VPC 服务的 Virtual Private Cloud (VPC) 内访问 Aurora Serverless 数据库集群。
然而,这让我感到困惑,因为我只能将“公共可访问性”设置为“是”。我还能够使用指定的端点连接到 VPC 外部的数据库。
我是否误解了限制(公共IP)?或者这是最近才成为可能的事情?
谢谢你!