将 Web 上的大型数据集直接下载到 AWS S3

数据挖掘 数据集 aws
2021-10-02 03:03:22

有谁知道是否可以从 URL 将大型数据集导入 Amazon S3?

基本上,我想避免下载一个巨大的文件,然后通过门户网站将其重新上传到 S3。我只想将下载 URL 提供给 S3 并等待他们将其下载到他们的文件系统。这似乎是一件容易的事情,但我只是找不到它的文档。

4个回答

由于您显然拥有 AWS 账户,我建议您执行以下操作:

  • 创建 EC2 实例(任意大小)
  • 使用wget(或 curl)将文件提取到该 EC2 实例。例如:wget http://example.com/my_large_file.csv
  • 安装s3cmd
  • 用于s3cmd将文件上传到 S3。例如:s3cmd cp my_large_file.csv s3://my.bucket/my_large_file.csv

由于各种 AWS 服务之间的连接利用 AWS 的内部网络,因此从 EC2 实例上传到 S3 非常快。比从您自己的计算机上传要快得多。通过这种方式,您可以避免将文件下载到您的计算机并节省通过 Web 界面上传文件的大量时间。

请参阅 Aws 文档:http ://aws.amazon.com/code有可用于大多数编程语言的库。因此,您可以创建一个存储桶并在代码中配置以从 url 获取数据并在 s3 中写入该存储桶

例如在 python 中:

from boto.s3.key import Key
k = Key(bucket)
k.key = 'foobar'
k.set_contents_from_string(url_data)

参考:https ://boto.readthedocs.org/en/latest/s3_tut.html

  1. 启动具有足够存储空间的 EC2 实例

  2. SSH 到实例

  3. 从本地机器获取与下载对应的 curl 命令。您可以使用谷歌浏览器中的开发者选项->网络选项卡->复制->复制为curl(这一步对于一些需要认证的网站例如kaggle是必要的)

  4. 从实例终端运行curl命令(附加-o output_file到命令)。这将下载并保存文件

  5. 配置 aws 凭证以将实例连接到 s3(一种方法是使用命令aws config,提供 AWS 访问密钥 ID 和密钥),

  6. 使用此命令将文件上传到 s3:

    aws s3 cp path-to-file s3://bucket-name/
    

您可以将您的 s3 存储桶挂载到 ec2 实例,然后 cd 到 /path/to/s3_mounted_on_a_folder,您可以简单地使用以下命令:

wget https://your.download.url/

要将 s3 挂载到您的 ec2,请使用 s3fs。