【问题标题】:How do I create a Presigned URL to download a file from an S3 Bucket using Boto3?如何创建预签名 URL 以使用 Boto3 从 S3 存储桶下载文件?
【发布时间】:2020-05-26 12:46:22
【问题描述】:

我必须从我的S3 bucket 下载一个文件到我的服务器上进行一些处理。存储桶不支持直接连接,必须使用Pre-Signed URL


Boto3 Docs 谈到使用预签名 URL 进行上传,但没有提及下载。

【问题讨论】:

  • 能否请您告诉我可以改进的地方?我浏览了链接,但无法弄清楚我的问题的哪一部分不符合标准。

标签: python-3.x amazon-web-services amazon-s3 download boto3


【解决方案1】:
import boto3

s3_client = boto3.client('s3')

BUCKET = 'my-bucket'
OBJECT = 'foo.jpg'

url = s3_client.generate_presigned_url(
    'get_object',
    Params={'Bucket': BUCKET, 'Key': OBJECT},
    ExpiresIn=300)

print(url)

另一个例子见:Presigned URLs — Boto 3 documentation

您还可以使用 AWS CLI 生成预签名 URL:

aws s3 presign s3://my-bucket/foo.jpg --expires-in 300

见:presign — AWS CLI Command Reference

【讨论】:

  • 这个答案显示了如何生成预签名的 url,但不显示如何下载文件。
  • @DavidMedinets 预签名的网址可以作为任何常规文件下载。
  • @ArielM。 - 对我不起作用.. 尝试在浏览器上打开预签名 url 时访问被拒绝
  • @SiddhantSadangi 预签名 URL 使用来自用于创建预签名 URL 的凭据的权限。因此,接收Access Denied 表明所使用的凭据没有 有权访问该对象。您可以通过使用具有相同凭证(例如 aws s3 cp s3://bucketname/object.name .)的 AWS CLI 尝试访问对象来测试这一点。
猜你喜欢
  • 1970-01-01
  • 2019-06-29
  • 2022-01-09
  • 2015-11-02
  • 2015-09-14
  • 2020-04-05
  • 2019-01-27
  • 2018-01-04
  • 1970-01-01
相关资源
最近更新 更多