【问题标题】:Can I store a temp file on AWS Lambda Function?我可以在 AWS Lambda 函数上存储临时文件吗?
【发布时间】:2018-06-20 10:45:32
【问题描述】:

我正在编写一个用于文件提取的 lambda 函数,并且需要在执行此函数时存储一个文件,因此需要将该文件存储在 aws lambda 函数中。 是否可以在 lambda 上存储文件。

【问题讨论】:

  • 只要你只在同一次调用中需要这个文件,这样做是没有问题的。
  • 不仅在同一次调用中,该文件将在同一函数的后续调用中出现。但是,它将仅限于此实例的本地范围。
  • 只需将其存储在/tmp 中。容器可能会被重复使用,所以如果你不再需要它,请删除该文件,否则后续执行该函数可能会填满可用磁盘空间(500MB)。
  • 由于文件无论如何都不是持久的,因此通常没有充分的理由使用一个,只需使用常规内存 (RAM)。在大多数语言中,您还可以使用不会保存到磁盘的虚拟文件。
  • 我相信这是一篇旧文章,但是如果知道 AWS Lambda 中是否支持自动机制以在每次 Lambda 执行后释放 /tmp 会很有用?或者如果必须手动完成,我们该怎么做或如何跟踪空间,谢谢@JohnRotenstein

标签: amazon-web-services aws-lambda


【解决方案1】:

是的,引用自 AWS Lambda 常见问题

每个 Lambda 函数在其自己的 /tmp 目录中接收 500MB 的非永久性磁盘空间。

https://aws.amazon.com/lambda/faqs/

请注意,正如评论者所指出的,它仅在您的函数执行一次时可靠。您无法控制执行环境,因此后续运行可能在您的 lambda 函数的不同实例中。

如果您需要更持久的数据,您应该使用 AWS S3。

【讨论】:

  • 我理解如果 Lambda 函数自动在 /tmp/ 中创建/存储文件,那么它会自动释放 /tmp/,尽管在我们手动提及 /tmp 的情况下,多一点可能会更好/ 像iterator.to_csv(f'/tmp/{i}.csv'),它会在每次执行后自动清理 /tmp/ 还是我们必须使用某种方法释放 /tmp/,谢谢@poida
  • @omdurg 不确定您所说的“在 /tmp/ 中自动创建/存储文件”是什么意思,但一般来说,Lambda 服务不会在 Lambda 函数执行之间清理 /tmp。每当您的 Lambda 函数热启动时,它都会从上一次执行中继承 /tmp,以及上一次执行在此处写入的任何内容。 Lambda 最终将决定回收运行时环境,此时 /tmp 将被擦除/丢弃。如果您不希望 /tmp 磁盘空间在调用之间持续存在,请在结束 Lambda 函数之前删除您在此处写入的任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
相关资源
最近更新 更多