【发布时间】:2021-05-21 23:41:14
【问题描述】:
我有一个由 API Gateway 触发的 Lambda 函数。
根据请求参数,此函数可能会调用另一个 API 端点。
其他 API 端点的 URL 在请求中通过参数传递。
因此,例如,我可以这样调用我的端点:
因此,Lambda 函数将在某个时候调用另一个 API:https://api.example.com/
我的真实函数在调用其他 API 之前有一些复杂的逻辑,但你明白了。
在某些情况下,函数会调用自己的端点(递归),但是传递不同的参数来处理一些逻辑,这样就不会造成死循环。
但是可能有人不小心把参数配置错了,导致死循环,导致函数每小时被调用数百万次,导致AWS收费居高不下。
如何防止这个 Lambda 函数导致意外的无限循环并避免巨额 AWS 账单?
【问题讨论】:
-
为什么不在调用自身之前验证参数?
-
如果您可以完全控制代码和 API 调用,则在每次调用中包含一个递减的生存时间 (TTL) 参数。当它达到 0 时,停止。
-
@jarmod 你能提供更多关于如何实现它的细节吗?您的意思是在后续 API 调用中将此 TTL 值作为 HTTP 标头发送吗?
-
它可能只是 HTTP API 请求上的查询参数,例如
?id=21&ttl=3.
标签: amazon-web-services aws-lambda aws-api-gateway infinite-loop