amazon-web-services - 从 AWS Lambda 中清除 tmp 文件夹
问题描述
嗨,我有一个 AWS Lambda 环境,其中临时目录现在已满,我得到以下信息:
java.lang.RuntimeException: java.nio.file.FileSystemException: /tmp/out3786803744412914689: No space left on device
它是无服务器的,所以我不能简单地登录该框并删除目录的内容。
除了部署代码更改以在重新启动时清除临时文件夹之外,还有什么方法可以解决此问题?
解决方案
当触发 AWS Lambda 函数时,会创建一个临时容器。然后 Lambda 函数在容器中运行。
如果多次触发 Lambda 函数,可能会创建多个容器。例如,如果函数需要 5 秒才能运行,并且在一秒钟内触发了 10 个函数,则可能会预配 50 个容器。
此外,一旦函数完成执行,如果再次触发 Lambda 函数,容器可能会保留并再次使用。
因此,没有用于 Lambda 函数的单一“服务器”。它可能很多,也可能是一个被重复使用的。
建议函数/tmp
在结束执行之前删除它们的临时文件。这样,空间将可用于下一次执行。
相反,您可能希望有意将一些数据保留在容器中,以便下次执行时起到缓存的作用。例如,如果函数下载了一些参考数据,如果容器被重复使用,则下次不需要重新下载数据。
底线:对功能进行编程以自行清理。
推荐阅读
- django - Django:将数据对象从视图传递到模板到视图的正确方法?
- android - 我可以使用 react-native 开发地图应用吗
- python - 计算列表中的对数,不考虑顺序
- tensorflow - 使用 K.tile() 复制张量
- javascript - 如何使用 ES6 之前的方法创建扩展 HTMLElement 的类的等价物
- gatsby - Gatsby.js - 导出 sanity.io 数据(可能在 markdown 文件中导出 netlify-cms)
- php - 从嵌套数组中获取最大日期
- php - WPDB 从 wp_capabilities 获取值
- c# - 是否可以构建针对 Linux 和 Windows 的 .Net Core C++/CLI 应用程序
- lua - 如何在 Lua 中打印表格(指针)内容