【问题标题】:Mount S3 File System in AWS Lambda?在 AWS Lambda 中挂载 S3 文件系统?
【发布时间】:2018-12-01 14:43:23
【问题描述】:

您知道是否可以在 AWS S3 上安装文件系统以增加 AWS Lambda 存储?

【问题讨论】:

  • Stack Overflow 仅用于编程问题

标签: amazon-web-services amazon-s3 filesystems aws-lambda


【解决方案1】:

不能将 Amazon S3 挂载为文件系统以与 AWS Lambda 一起使用。

AWS Lambda 函数设计为短运行脚本,可响应您环境中的事件(例如,进入 Kinesis 流的数据,在 Amazon S3 中创建的文件)。它们通常只运行几秒钟。

虽然您尚未描述您的用例,但需要大量使用文件系统的东西通常不是 Lambda 函数的良好用途。

当然,您可以通过来自 Lambda 函数的 SDK 调用在 Amazon S3 中检索和创建对象。这是从 Lambda 加载/存储数据的一种非常快速且高效的方式。

【讨论】:

  • 你可以。 AWS 官方文档中的几个示例就是这样做的,例如docs.aws.amazon.com/pinpoint/latest/developerguide/…
  • 有趣。该代码示例使用s3fs 来“挂载”S3。我通常会看到不使用s3fs 的建议,因为它可能不如直接调用 S3 API 可靠。令人惊讶的是,他们在文档中添加了 s3fs 示例!
【解决方案2】:

lambda 提供的存储空间实际上是临时磁盘空间,只能在 lambda 执行期间用于临时存储。它被限制为 512 Mb 并且不能增加。

如果您的用例需要更多 lambda 空间,而您可以直接从 s3 存储和检索对象。它非常快速和高效。此外,s3 不提供文件系统,它只是基于对象的存储,每个文件夹、子文件夹和每个文件都代表 s3 中的一个 object,这实际上看起来像一个层次结构,但实际上它不是.

虽然 lambda 中的临时磁盘空间具有分层文件结构

【讨论】:

  • 需要注意的是,虽然磁盘空间是短暂的,但在同一个容器实例的调用之间会保留。因此,如果您将文件存储在 /tmp 中,它可能会被填满并导致所有后续功能失败,直到 AWS 启动一个新实例。
【解决方案3】:

在最近对 AWS 进行功能更新后,您现在可以将 EFS 挂载到您的 Lambda 文件系统中: https://aws.amazon.com/blogs/compute/using-amazon-efs-for-aws-lambda-in-your-serverless-applications/

【讨论】:

    【解决方案4】:

    解决https://stackoverflow.com/a/50982764/1259398中的cmets:

    您似乎混淆了模拟文件系统的 Python 库 s3fs,但它是 Boto 之上的库,与 s3fs-fuse 模块在指定文件夹下“挂载”一个 S3 存储桶,这变得可供整个操作系统就像是一个常规的分层 FS。

    参考资料:

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 2019-02-02
      • 2017-01-15
      • 2019-05-11
      • 2015-03-03
      • 1970-01-01
      • 2019-03-24
      • 2016-02-02
      相关资源
      最近更新 更多