无法从S3存储桶下载图像

时间:2017-02-03 16:42:22

标签: python amazon-s3

我有一张图片的S3 bukcet网址。我试图使用urllib或wget下载此图像,在这两种情况下代码执行成功,但下载了损坏的图像。当我说腐败时,我的意思是,对于2MB的图像,只能下载200kb。

urllib.urlretrieve(str(sys.argv[1]), "data/img"+str(randomword(10))+".jpg")

在后面的部分中,我只是添加随机字符串作为要下载的图像的名称。

请帮忙

1 个答案:

答案 0 :(得分:1)

您可以先通过身份验证并下载来获取文件。我建议只使用python boto库来处理亚马逊网络服务。如果您这样做,代码将看起来像这样

import boto

# set your AWS creds on your environment path or hardcode it
AWS_ACCESS_KEY_ID = os.getenv("AWS_KEY_ID") 
AWS_ACCESS_SECRET_KEY = os.getenv("AWS_ACCESS_KEY")

conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_ACCESS_SECRET_KEY)

bucket = conn.get_bucket("my_bucket_name")

key = bucket.get_key('file_on_s3.txt')
key.get_contents_to_filename('where_file_goes_locally.txt')

如果你真的不想使用boto,你可以手动将它拼凑在一起,并且基本上做boto从你的aws信誉中构建正确的请求标题。我在我拥有的服务器上使用bash脚本执行此操作。如果你想用python请求或urllib重写它,这应该指向正确的方向(https://gist.github.com/davidejones/d05f51df75e659111227)。