带节点的 AWS Lambda - 将文件保存到 Lambda 的文件系统中

AWS Lambda with Node - saving files into Lambda's file system

我需要将从 S3 获取的文件保存到 Lambda 的文件系统中,我想知道我是否可以仅使用 fs.writeFileSync 来做到这一点?

或者我是否仍然必须按照此处所述使用 context 函数:

(试图找到更新的示例,但找不到)。

推荐的方法是什么?

请指教

Lambda 不允许访问本地文件系统。它意味着成为一个短暂的环境。它们允许访问 /tmp 文件夹,但最多只能访问 512MB。如果您想在函数的同时进行存储,则需要实施 AWS S3 或 AWS EFS。

Here's an article from AWS explaining this.

Here's the docs on adding storage to Lambda.

是的,您可以使用典型的 fs 函数从本地磁盘 read/write,但请注意写入仅限于 /tmp 目录和 Lambda 函数可用的最大磁盘空间位置是 512 MB。另请注意,在那里写入的文件可能会持续到下一次(热)Lambda 调用。

如果您只想将对象从 S3 下载到本地磁盘(假设它适合可用磁盘空间),那么您可以结合使用 AWS SDK 方法和 Node.js 流式传输到 stream the content to disk

此外,值得注意的是,根据您的应用程序,您可以通过流处理 RAM 中的整个 S3 对象,而无需实际持久化到磁盘。如果您的对象大小超过 512MB,这将很有帮助。

如果您需要保留非常大的文件,请考虑使用 Elastic File System