/tmp 中的文件是否被 AWS Lambda 自动删除?

Are files from /tmp automatically deleted by AWS Lambda?

AWS 会自动清除 /tmp 目录吗?

flush()类的功能吗?如果没有,我如何才能 remove/delete /tmp 文件夹中的所有文件?

我有一个 AWS Lambda 函数,可以将文件下载到我的 /tmp 文件夹中。我解压缩压缩文件并 gzip 所有单个文件。所有这些都发生在 /tmp 目录中,在我再次将 gzip 文件上传到 S3 之前。

之后,我不再需要我的 /tmp 文件夹中的文件并想清除该目录。

如果我从本地 macOS 机器上打开 /tmp,我根本看不到任何相关文件,所以我不确定如何检查它们是否已成功删除。

不,/tmp 中的文件不会自动删除。


AWS Lambda FAQs状态:

To improve performance, AWS Lambda may choose to retain an instance of your function and reuse it to serve a subsequent request, rather than creating a new copy. To learn more about how Lambda reuses function instances, visit our documentation. Your code should not assume that this will always happen.

根据上述文档和经验,您可能会发现一个空目录或“预用”/tmp 目录,具体取决于 AWS Lambda 是否为您当前的请求重新使用了以前的 Lambda 环境。

这可能适合,也可能不适合,具体取决于用例&没有任何保证,因此如果您需要确保在每次函数调用时都有一个干净的 /tmp 目录,请清除 /tmp目录自己.


Is there a flush() sort of function?

不,AWS 不(也不应该)通过他们的 SDK 以编程方式提供一种方式,因为这与文件 I/O.

有关

如何删除 /tmp 目录中的所有文件将取决于 Lambda 函数运行时。

对于Python,试试:

from subprocess import call
...
call('rm -rf /tmp/*', shell=True)