首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lambda或s3或api网关的AWS无服务器重置缓存

使用lambda或s3或api网关的AWS无服务器重置缓存
EN

Stack Overflow用户
提问于 2017-11-22 01:41:52
回答 1查看 3K关注 0票数 2

我有一个无服务器的python函数(lambda1),它与api网关和s3集成在一起。因此,当用户在api网关上访问GET /names时,lambda读取S3中的CSV文件并返回响应。CSV文件很大,因此lambda需要大量时间来响应。因此,在python中添加了一个List来在内存中缓存CSV文件,以减少响应时间。现在,当我上传一个新的CSV文件时,我希望API从新的CSV返回新的响应,但是由于缓存,它不会(lambda并不经常关闭,因为速度很高)

我还有另一个lambda (lambda2),当有一个新的CSV文件上传到同一个s3桶中并处理CSV文件以进行审计时,就会调用它。

所以我有三个想法来重置缓存。但是想知道正确或更好的方法来重置缓存。

  1. S3 lambda1通知事件
  2. lambda1中的重置缓存从lambda2调用处理程序
  3. 在api网关中有一个端点来重置缓存并从lambda2调用端点
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-22 05:45:40

如果AWS由于通信量的原因为Lambda创建了多个容器,那么列出的3种方法都不起作用。因为如果发生这种情况,那么所有的方法最终都只会触发一个容器,只有那个容器会得到更新的缓存,但是剩下的仍然会过时。

相反,您可以做的是在Lambda中缓存lastModified时间戳,在处理任何请求之前检查S3文件的时间戳。如果它与缓存的时间戳不一样,那么它意味着上传了一个新文件,您可以使用最新的CSV更新缓存。

使用这种方法,您的响应时间将增加一些(用于检查时间戳的额外时间),但至少您将始终提供修改后的最新内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47425538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档