【问题标题】:Does mounting an S3 bucket as a drive in an EC2 instance copy-pastes or directly saves files in the bucket?将 S3 存储桶安装为 EC2 实例中的驱动器是复制粘贴还是直接将文件保存在存储桶中?
【发布时间】:2019-08-10 21:20:39
【问题描述】:

我已经构建了一个脚本,可以抓取数千个 pdf 文件。我想构建一个 t2 实例,该实例连续运行脚本至少 2 周,并将下载的文件保存在 S3 存储桶中。我读过这个tutorial 但我有疑问:

如果我将下载文件夹设置为挂载的驱动器位置,那么这里的挂载是否意味着数据将存储在EBS和S3中,或者文件将直接保存在S3存储桶中.

我需要澄清一下,因为在构建实例时,我会保持较低的存储空间(约 75 GB)并租用一个 S3 存储桶,因为抓取的文件的总大小将超过 300 GB。

谢谢!

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    是的,挂载的驱动器不会占用您的本地存储空间,因此您只需启动一个只有 8GB 的​​实例即可。对于安装工具,我推荐https://github.com/kahing/goofys(非常积极开发)而不是 s3fs,如果你有大文件,这似乎很慢并且会严重加热 CPU 使用率。多年来,我一直在使用 goofys 和我的微型实例加上 300GB 安装的驱动器,没有任何缓慢和问题。

    另一个更好的解决方案是使用 aws cli 将文件直接传输到 S3,而无需任何挂载技术。您可以简单地使用 boto3 编写一个 python 脚本,它首先下载 pdf,然后复制到 S3,然后在本地删除该 pdf(即使对于大文件也只需几秒钟)。

    【讨论】:

      【解决方案2】:

      https://cloudkul.com/blog/mounting-s3-bucket-linux-ec2-instance/

      S3 存储桶可以作为称为 S3fs 的文件系统安装在 AWS 实例中。 S3fs 是一个 FUSE 文件系统,允许您将 Amazon S3 存储桶挂载为本地文件系统。它的行为类似于网络连接驱动器,因为它不在 Amazon EC2 上存储任何内容,但用户可以从 EC2 实例访问 S3 上的数据。

      要摆脱这一点的关键点是“网络连接驱动器”,这意味着除了您需要安装的依赖项之外,它不会使用您的 EC2 实例上的任何磁盘内存。

      【讨论】:

      • 谢谢!另外,S3 可靠吗?还是建议我选择 EFS 或 EBS?
      • 如果您希望刮板的结果最终出现在 S3 上,那么使用 S3 应该没问题。它也应该便宜得多。只知道这个 S3 解决方案更适合写作而不是阅读。
      • 我不必以编程方式阅读它们。我们将把它们下载到我们的本地机器上进行分析。那会好吗?
      • S3 在这种情况下无论如何都会更好更容易使用。如果可以接受,您介意接受答案吗?
      【解决方案3】:

      如果您使用的脚本是直接将文件复制到 s3fs 挂载上的目录,则不会占用 EBS 上的任何空间。

      如果脚本首先将 pdf 复制到 s3fs 之外的任何地方,然后 MOVES 将其复制到 s3fs,它仍然可以。它只会占用 s3 存储桶上的空间。

      如果脚本首先将 pdf 复制到 s3fs 之外的任何地方,然后将其 复制 到 s3fs。它仍然会在 EBS 上留下一个副本并占用那里的空间。所以你需要检查一下——你是在复制还是迁移到 S3fs。 如果您正在复制,请在复制成功后将其替换为移动或删除源。

      因此,即使是 8 GB 的空间也应该足够用于实例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-07
        • 2017-11-23
        • 2020-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多