我有一个lambda函数,它从DynamoDB读取并在/ tmp中创建一个最终上传到s3的大文件(~500M)。上传后,lambda将清除/ tmp中的文件(因为实例很可能被重用)
即使您忽略了延迟,此功能也需要大约1分钟才能执行。
在这种情况下,当我尝试再次调用该函数时,在< 1m,如果我有足够的空间写入/ tmp,我无法控制。我的功能失败了。
问题: 1.在这种情况下,已知的工作是什么? (可能在/ tmp中提供更多空间或确保为每次新执行提供干净/ tmp) 2. Lambda中有关文件创建和管理的最佳实践是什么? 3.我可以将另一个EBS或其他存储附加到Lambda执行吗? 4.有没有办法让文件系统像访问s3那样我的函数而不是使用/ tmp可以直接写入s3?
答案 0 :(得分:6)
我怀疑两个同时运行的AWS Lambda实例将共享/ tmp或任何其他本地资源,因为它们必须完全隔离执行。您的错误应该有不同的解释。如果您的意思是,AWS Lambda的后续调用会重用相同的实例,那么您应该自行清除/ tmp。
通常,如果您的Lambda是资源耗费者,最好在ECS容器工作者中完成这项工作,并使用Lambda启动ECS任务,如here所述。
答案 1 :(得分:1)
您可能会遇到AWS Lambda的512 MB /tmp limit。
您可以通过将文件存储在内存中来提高性能并解决问题,因为Lambda函数的内存限制可以高达1.5 GB。