使用python直接将文件上传到S3

时间:2019-04-03 04:43:02

标签: python-3.x amazon-s3

我想将从http url接收的文件直接下载到amazon s3存储桶中,而不是本地系统中。 我在64位Windows OS上运行python。

在文件提取期间,我尝试提供Amazon S3的存储桶url作为python的urlretrieve函数的第二个参数。

urllib.request.urlretrieve(url, amazon s3 bucket url)

我希望它直接将文件上传到s3,但是经过一番思考之后,它失败并出现filenotFound error。

1 个答案:

答案 0 :(得分:0)

您似乎想在Windows计算机(本地计算机或Amazon EC2上运行)上运行命令,该命令会将URL标识的页面内容直接复制到Amazon S3。

这是不可能的。没有针对Amazon S3的API调用,该API可以从其他位置检索内容。

您将需要从Internet 下载文件,然后上传到Amazon S3。代码类似于:

import boto3
import urllib.request

urllib.request.urlretrieve('http://example.com/hello.txt', '/tmp/hello.txt')

s3 = boto3.client('s3')
s3.upload_file('/tmp/hello.txt', 'mybucket', 'hello.txt')