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

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

有帮助吗?

解决方案

由于您显然拥有一个AWS帐户,因此我建议以下内容:

  • 创建一个EC2实例(任何大小)
  • 利用 wget(或卷曲)将文件(s)获取到该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界面上载的大量时间。

其他提示

  1. 启动带有足够存储的EC2实例

  2. 实例的SSH

  3. 获取与本地计算机下载相对应的curl命令。您可以在Google Chrome->网络选项卡中使用开发人员选项 - >复制 - >复制为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/
    

参考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

您可以将S3存储桶安装到EC2实例中,然后将CD降至/路径/TO/S3_MOUNTED_ON_A_FOLDER,您可以简单地使用命令:

wget https://your.download.url/

要将S3安装到您的EC2上,请使用S3FS。

许可以下: CC-BY-SA归因
scroll top