【发布时间】:2018-11-24 18:16:55
【问题描述】:
我有一个 AWS Lambda 函数,它在冷启动时从 s3 调用创建一个对象。然后我将对象保存在缓存中,而函数是温暖的,以减少加载时间。当 s3 中的文件发生更改时,我有一个触发器来运行 lambda,但并非所有正在运行的 lambda 实例都重新启动并从 s3 中提取。
有没有办法关闭强制完全冷启动的所有 lambda 实例?
另外,我不想用python。
【问题讨论】:
-
根据您缓存的 s3 对象的大小,也许您可以验证 etag 是否仍然匹配以确定是否应该再次拉取该对象。如果对象本身不比 etag 大多少,那么这个策略当然没有意义。
-
有多个文件夹和文件循环通过以创建对象。 etag 是整个存储桶还是单个文件?对 etag 进行异步检查可能是有意义的。
-
etag 是每个 s3 对象
-
等一下,现在我很困惑。您的 lambda 触发 s3 更新事件?这意味着每次您的 lambda 运行时,s3 都发生了变化,您需要重新拉动?缓存有什么意义?
-
lambda 是一个路由器,用于重定向流量。路线被更新并存储在 s3 中。为了保持低停机时间,对象被缓存,以便在大多数情况下,当 lambda 运行时,路由已经映射到对象中。 s3 仅在 lambda 冷启动时检查。 s3 有一个调用 lambda 的触发器,但它不会重新启动 lambda 的所有实例。所以一些 lambdas 有一个过时的路线。
标签: amazon-web-services amazon-s3 aws-lambda