首页 > 解决方案 > 从 AWS Lambda 中清除 tmp 文件夹

问题描述

嗨,我有一个 AWS Lambda 环境,其中临时目录现在已满,我得到以下信息:

java.lang.RuntimeException: java.nio.file.FileSystemException: /tmp/out3786803744412914689: No space left on device

它是无服务器的,所以我不能简单地登录该框并删除目录的内容。

除了部署代码更改以在重新启动时清除临时文件夹之外,还有什么方法可以解决此问题?

标签: amazon-web-servicesaws-lambda

解决方案


当触发 AWS Lambda 函数时,会创建一个临时容器。然后 Lambda 函数在容器中运行。

如果多次触发 Lambda 函数,可能会创建多个容器。例如,如果函数需要 5 秒才能运行,并且在一秒钟内触发了 10 个函数,则可能会预配 50 个容器。

此外,一旦函数完成执行,如果再次触发 Lambda 函数,容器可能会保留并再次使用。

因此,没有用于 Lambda 函数的单一“服务器”。它可能很多,也可能是一个被重复使用的。

建议函数/tmp在结束执行之前删除它们的临时文件。这样,空间将可用于下一次执行。

相反,您可能希望有意一些数据保留在容器中,以便下次执行时起到缓存的作用。例如,如果函数下载了一些参考数据,如果容器被重复使用,则下次不需要重新下载数据。

底线:对功能进行编程以自行清理。


推荐阅读