Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将文件从网站下载到S3 bucket,而不必下载到本地机器_Python_Amazon S3_Amazon Ec2 - Fatal编程技术网

Python 如何将文件从网站下载到S3 bucket,而不必下载到本地机器

Python 如何将文件从网站下载到S3 bucket,而不必下载到本地机器,python,amazon-s3,amazon-ec2,Python,Amazon S3,Amazon Ec2,我正在尝试从网站下载数据集。然而,我想下载的所有文件加起来大约有100GB,我不想下载到我的本地机器上,然后上传到s3。有没有办法直接下载到s3存储桶?或者你必须使用ec2吗?如果是的话,有人能简要说明一下如何使用ec2吗?谢谢,S3的方法支持字节(或文件)的正文参数: Python示例: response = client.put_object( Body=b'bytes'|file, Bucket='string', Key='string', ) 因此,如果您使用

我正在尝试从网站下载数据集。然而,我想下载的所有文件加起来大约有100GB,我不想下载到我的本地机器上,然后上传到s3。有没有办法直接下载到s3存储桶?或者你必须使用ec2吗?如果是的话,有人能简要说明一下如何使用ec2吗?谢谢,S3的方法支持字节(或文件)的正文参数:

Python示例:

response = client.put_object(
    Body=b'bytes'|file,
    Bucket='string',
    Key='string',
)
因此,如果您使用Python下载网页,您将使用
requests.Get()
方法或.Net,您可以使用
HttpWebRequest
WebClient
,然后将文件上载为字节数组,这样您就不需要在本地保存它。这一切都可以在内存中完成

还是必须使用ec2

Ec2只是云中的虚拟机,您可以通过编程从台式PC/笔记本电脑上完成此任务(将100gb下载到S3)。只需打开命令窗口或终端,然后键入:

AWS Configure
输入IAM users creds并使用aws cli或使用aws SDK,如上面的python示例所示。您可以向S3 Bucket提供一个允许IAM用户访问的策略文档。这会将所有内容下载到您的本地计算机


如果您希望在EC2上运行此操作并避免将所有内容下载到本地PC,请修改分配给EC2的角色,并将其Put权限授予S3。这将是最简单和最安全的。如果您使用内存和字节方法,它将下载所有数据,但不会将其保存到磁盘。

EC2方法可能是您最好的选择。没有办法触发像这样由S3启动的获取;您可能会找到一种通过Lambda实现的方法,但EC2可能会更快。@ceejayoz您能简单说明一下如何实现这一点吗?我是否应该打开远程桌面上的ec2实例,从网站下载文件,然后上传到s3?@awrd2019您是否可以访问运行该网站的服务器?您如何知道服务器上有哪些文件?(是否提供了它们的列表?)?助教