AWS Lambda No Space Left on Device 错误

AWS Lambda No Space Left on Device error

我正在使用 API 网关调用 lambda 函数,该函数从 s3 导入一个 mpeg 文件 (10 mb) 并保存在 lambda 的 /tmp 文件夹中,然后 lambda 将其上传到外部 API ( YouTube 等) 最近 API 对 lambda 的网关调用间歇性失败并出现错误

[Errno 28] No space left on device

这是我下载文件的方式

urllib.urlretrieve (s3_mpeg_url, '/tmp/{}'.format(mpeg_filename))

如果我创建同一个 lambda 函数的新版本并分配给指向 的别名 API 网关,它会开始工作,但在某个时候再次出现相同的错误

当我从 lambda 控制台测试 lambda 函数时,它总是有效

有什么想法吗?

您的 lambda 函数 has approximately 500MB of disk space available on /tmp。但是,出于性能原因,AWS Lambda 可能会在后续调用中保留和重用您的函数实例。这里有两条可能的路径:

  1. 如果你的函数是完全无状态的(即你不需要mpeg文件上传到外部API),只需在/tmp文件夹中删除它上传。
  2. 如果您需要保留数据,请考虑在处理后将其存储在其他媒体上,例如 S3 或 DynamoDB。