重新使用/ tmp时如何扩展Lambda?

san*_*zgk 14 scalability amazon-web-services aws-lambda

我有一个lambda函数,它从DynamoDB读取并在/ tmp中创建一个最终上传到s3的大文件(~500M).上传后,lambda将清除/ tmp中的文件(因为实例很可能被重用)

即使您忽略了延迟,此功能也需要大约1分钟才能执行.

在这种情况下,当我尝试再次调用该函数时,在<1m中,如果我有足够的空间写入/ tmp,我无法控制.我的功能失败了.

问题:1.在这种情况下,已知的工作是什么?(可能在/ tmp中提供更多空间或确保为每次新执行提供干净/ tmp)2.有关Lambda中文件创建和管理的最佳实践是什么?3.我可以将另一个EBS或其他存储附加到Lambda执行吗?4.有没有办法让文件系统像访问s3那样我的函数而不是使用/ tmp可以直接写入s3?

Leo*_*eon 7

我怀疑两个同时运行的AWS Lambda实例将共享/ tmp或任何其他本地资源,因为它们必须完全隔离执行.您的错误应该有不同的解释.如果您的意思是,AWS Lambda 的后续调用会重用相同的实例,那么您应该自己清除/ tmp.

在一般情况下,如果你的LAMBDA是一个资源猪,你最好做在ECS容器工人的工作和使用LAMBDA用于启动ECS任务,描述在这里.

  • 这个答案是对的.实例经常被重用,**但不是同时**.在函数完成时清理临时目录 - 或者只删除启动时存在的任何文件(意味着在调用处理程序之后,当然不是在初始化期间) - 这应该不是问题.+1 (14认同)
  • @usama```rm -rf/tmp/*``` (2认同)

Mar*_*erg 5

您可能会遇到AWS Lambda 的512 MB /tmp 限制。

您可以通过将文件存储在内存中来提高性能并解决问题,因为 Lambda 函数的内存限制最高可达1.5 GB


Kon*_*mba 5

从 2022 年 3 月开始,Lambda 现在支持/tmp目录的最大大小限制提高到10,240MB。更多信息请点击此处