You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda是否自动删除/tmp目录文件?如何手动清理该目录?

关于AWS Lambda /tmp目录清理的相关解答

/tmp目录的自动清理规则

AWS Lambda不会在每次函数调用结束后自动清理/tmp目录:

  • 冷启动函数时,/tmp目录初始状态为空
  • 同一份执行环境被多次调用复用时,/tmp目录内的文件会在多次调用之间保留共享
  • 只有当执行环境被AWS底层回收销毁(比如长期无调用、函数版本更新、底层资源调度)时,/tmp目录的内容才会被清空
    如果不主动清理临时文件,多次调用后很容易占满/tmp默认512MB的存储空间,触发磁盘不足报错。

官方是否提供内置清理函数

AWS官方没有提供类似flush()的专门用于清理/tmp的内置接口,需要手动实现清理逻辑。

手动清空/tmp目录的实现方法

清理时只需删除/tmp下的所有文件和子目录即可,不要删除/tmp目录本身,不同运行环境的示例代码如下:

Python运行环境

import os
import shutil

def clear_tmp_dir():
    for file_name in os.listdir("/tmp"):
        file_path = os.path.join("/tmp", file_name)
        try:
            if os.path.isfile(file_path) or os.path.islink(file_path):
                os.unlink(file_path)
            elif os.path.isdir(file_path):
                shutil.rmtree(file_path)
        except Exception as e:
            # 可按需添加错误处理逻辑
            print(f"清理失败 {file_path}: {str(e)}")

你可以在文件上传到S3的逻辑执行完成后,调用上述函数即可完成清理。

Node.js运行环境

const fs = require('fs/promises');
const path = require('path');

async function clearTmpDir() {
    const files = await fs.readdir('/tmp');
    for (const file of files) {
        const filePath = path.join('/tmp', file);
        await fs.rm(filePath, { recursive: true, force: true });
    }
}

本地无法查看/tmp文件的解决方法

Lambda运行环境和你本地macOS的系统是完全隔离的,二者的/tmp目录是互相独立的存储空间,所以你在本地自然看不到Lambda运行时产生的临时文件。
要验证清理是否成功,只需在清理逻辑执行完成后,添加打印/tmp目录内容的日志代码,之后在AWS CloudWatch控制台对应Lambda函数的日志组中查看输出即可。
比如Python环境下添加:

print("清理后/tmp目录内容:", os.listdir("/tmp"))

如果输出为空列表,就说明清理成功。


内容的提问来源于stack exchange,提问作者x89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:45:03