如何使用boto3在s3上通过url访问图像?

时间:2017-05-15 07:26:44

标签: python amazon-s3 pyramid boto

我想要完成的是生成一个链接来查看文件(ex.image或pdf)。网址(https://[bucket].s3.amazonaws.com/img_name.jpg)无法访问该项目,我认为因为它的私有而非公开? (我不是存储桶的所有者,但是他给了我access_key和secret_key?)

目前,我所能做的就是使用此代码下载文件。

s3.Bucket('mybucket').download_file('upload/nocturnes.png', 'dropzone/static/pdf/download_nocturnes.png') 

我想访问s3上的图像,所以我可以将它放在HTML上,我可以使用访问和密钥查看吗?感谢那些可以提供帮助的人!

2 个答案:

答案 0 :(得分:6)

您可以使用generate_presigned_url功能使用预签名网址完成此操作。需要注意的是,预签名URL必须具有到期日期。我无法找到有关最大允许持续时间的文档。这是一个例子:

url = s3.generate_presigned_url('get_object',
                                Params={
                                    'Bucket': 'mybucket',
                                    'Key': 'upload/nocturnes.png',
                                },                                  
                                ExpiresIn=3600)
print url

答案 1 :(得分:1)

对于想要将generate_presigned_url用于公共对象且因此不想使用附加凭据的签名部分的人,我找到的最佳解决方案仍然是使用{{1} },只需将generate_presigned_url设置为Client.Config.signature_version

以下内容返回没有签名内容的公共链接。

botocore.UNSIGNED

关于boto3存储库的相关讨论是: