LIO*_*VSV 5 lambda amazon-web-services aws-api-gateway serverless-framework
当我尝试调用具有 HTTP 事件的方法时,它会导致500 Internal server error
.
在 CloudWatch 日志上显示Recoverable error occurred (Rate Exceeded.)
当我尝试调用没有 lambda 的函数时,它会执行响应。
这是我的无服务器配置:
您已将 Lambda 设置reservedConcurrency
为 0。这将阻止您的 Lambda 被调用。当您的函数被调用但您不确定原因并且想立即停止它时,将其设置为 0 通常很有用。
如果您想调用它,请更改reservedConcurrency
为正整数(默认情况下,它可以是 <= 1000 的正整数,但您可以通过联系 AWS 来增加此限制)或直接reservedConcurrency
从 .yml 文件中删除该属性,因为它会使用默认值。
无论如何,为什么有人会使用呢reservedConcurrency
?好吧,假设您的 Lambda 函数是由来自 API Gateway 的请求触发的。假设您每秒收到 400 个(高峰时段)请求,并且每次请求时都会触发另外两个 Lambda 函数,一个用于生成给定图像的缩略图,另一个用于在 DynamoDB 中插入一些元数据。理论上,您将同时运行 1200 个 Lambda 函数(假定所有 Lambda 函数都在不到一秒的时间内完成执行)。这会导致限制,因为 Lambda 函数的默认并发执行数为 1000。但是缩略图生成与来自 API Gateway 的请求一样重要吗?很可能不是,因为它自然是一个最终一致的任务,因此您可以将reservedConcurrency
缩略图 Lambda 设置为仅 200,这样您就不会耗尽并发性,这意味着其他函数将能够在给定的情况下启动以执行更有用的操作时间点(在我们的示例中,接收 HTTP 请求比生成缩略图更重要)。然后,剩下的 800 个并发可以在 API Gateway 触发的函数和将数据插入 DynamoDB 的函数之间分配,从而防止重要内容受到限制,并保持不那么重要的内容最终一致。
归档时间: |
|
查看次数: |
4822 次 |
最近记录: |