我正在尝试从网站下载数据集。但是,我要下载的所有文件总计不超过100 GB,我不想将其下载到本地计算机,然后上传到s3。有没有办法直接下载到s3存储桶?还是您必须使用ec2,如果可以,有人可以给出有关如何执行此操作的简短说明吗?谢谢
答案 0 :(得分:0)
S3的put_object()
方法支持字节(或文件)的Body参数:
Python示例:
response = client.put_object(
Body=b'bytes'|file,
Bucket='string',
Key='string',
)
因此,如果您下载网页,则使用Python使用requests.Get()
方法或.Net使用HttpWebRequest
或WebClient
,然后将文件作为字节数组上传,这样您无需将其保存在本地。都可以在内存中完成。
还是您必须使用ec2
Ec2只是云中的VM,您可以从台式机/笔记本电脑以编程方式执行此任务(将100gb下载到S3)。只需打开命令窗口或终端并输入:
AWS Configure
输入IAM用户凭据并使用aws cli或使用AWS SDK(如上面的python示例)。您可以给S3存储桶一个策略文档,该文档将允许访问IAM用户。这会将所有内容下载到本地计算机上。
如果要在EC2上运行此程序,并避免将所有内容下载到本地PC,请修改分配给EC2的角色,并为其赋予对S3的特权。这将是最简单,最安全的。如果您使用内存和字节方法,它将下载所有数据,但不会将其保存到磁盘。