题
有人知道是否可以从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界面上载的大量时间。
其他提示
启动带有足够存储的EC2实例
实例的SSH
获取与本地计算机下载相对应的curl命令。您可以在Google Chrome->网络选项卡中使用开发人员选项 - >复制 - >复制为curl(对于某些需要身份验证(例如Kaggle)的网站,此步骤是必需的)
从实例终端运行
curl
命令(附录-o output_file
到命令)。这将下载并保存文件配置AWS凭据将实例连接到S3(一种方法是使用命令
aws config
, ,提供AWS访问密钥ID和秘密),使用此命令将文件上传到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)
您可以将S3存储桶安装到EC2实例中,然后将CD降至/路径/TO/S3_MOUNTED_ON_A_FOLDER,您可以简单地使用命令:
wget https://your.download.url/
要将S3安装到您的EC2上,请使用S3FS。