有谁知道是否可以从 URL 将大型数据集导入 Amazon S3?
基本上,我想避免下载一个巨大的文件,然后通过门户网站将其重新上传到 S3。我只想将下载 URL 提供给 S3 并等待他们将其下载到他们的文件系统。这似乎是一件容易的事情,但我只是找不到它的文档。
有谁知道是否可以从 URL 将大型数据集导入 Amazon S3?
基本上,我想避免下载一个巨大的文件,然后通过门户网站将其重新上传到 S3。我只想将下载 URL 提供给 S3 并等待他们将其下载到他们的文件系统。这似乎是一件容易的事情,但我只是找不到它的文档。
由于您显然拥有 AWS 账户,我建议您执行以下操作:
wget http://example.com/my_large_file.csv
。 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)
启动具有足够存储空间的 EC2 实例
SSH 到实例
从本地机器获取与下载对应的 curl 命令。您可以使用谷歌浏览器中的开发者选项->网络选项卡->复制->复制为curl(这一步对于一些需要认证的网站例如kaggle是必要的)
从实例终端运行curl
命令(附加-o output_file
到命令)。这将下载并保存文件
配置 aws 凭证以将实例连接到 s3(一种方法是使用命令aws config
,提供 AWS 访问密钥 ID 和密钥),
使用此命令将文件上传到 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。