我想要完成的是生成一个链接来查看文件(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上,我可以使用访问和密钥查看吗?感谢那些可以提供帮助的人!
答案 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存储库的相关讨论是: