【问题标题】:How to download file from website to S3 bucket without having to download to local machine如何将文件从网站下载到 S3 存储桶而无需下载到本地机器
【发布时间】:2019-11-21 23:20:17
【问题描述】:

我正在尝试从网站下载数据集。但是,我要下载的所有文件加起来大约 100 GB,我不想下载到我的本地机器,然后上传到 s3。有没有办法直接下载到 s3 存储桶?或者您是否必须使用 ec2,如果可以,有人可以简要说明如何执行此操作吗?谢谢

【问题讨论】:

  • EC2 方法可能是您的最佳选择。没有办法像这样触发 S3 发起的 fetch;您或许可以通过 Lambda 找到一种方法,但 EC2 可能会更快。
  • @ceejayoz 您能否简要说明如何执行此操作?我是否应该在远程桌面上打开 ec2 实例以从网站下载文件,然后上传到 s3?
  • @awrd2019 您是否有权访问运行该网站的服务器?你怎么知道服务器上有什么文件? (是否提供了它们的列表?)
  • 嗨,您可以编辑标签以指示编程语言吗?塔

标签: python amazon-s3 amazon-ec2


【解决方案1】:

S3 的put_object() 方法支持字节(或文件)的 Body 参数:

Python 示例:

response = client.put_object(
    Body=b'bytes'|file,
    Bucket='string',
    Key='string',
)

因此,如果您使用 Python 下载网页,您将使用 requests.Get() 方法或 .Net,您可以使用 HttpWebRequestWebClient,然后将文件作为字节数组上传,因此您无需保存它本地。这一切都可以在内存中完成。

还是非得用ec2

Ec2 只是云中的虚拟机,您可以从台式电脑/笔记本电脑以编程方式执行此任务(将 100gb 下载到 S3)。只需打开命令行窗口或终端并输入:

AWS Configure

输入 IAM 用户凭据并使用 aws cli 或使用 AWS 开发工具包,如上面的 python 示例。您可以为 S3 存储桶提供允许访问 IAM 用户的策略文档。这会将所有内容下载到您的本地计算机。

如果您想在 EC2 上运行它并避免将所有内容下载到本地 PC,请修改分配给 EC2 的角色并将其授予 S3 权限。这将是最简单和最安全的。如果您使用内存和字节方法,它将下载所有数据,但不会将其保存到磁盘。

【讨论】:

    猜你喜欢
    • 2018-06-16
    • 2013-10-15
    • 2019-02-16
    • 2021-02-28
    • 2017-02-16
    • 2014-04-04
    • 2021-12-17
    • 2019-10-22
    • 1970-01-01
    相关资源
    最近更新 更多