python-3.x 如何创建一个预签名的URL来使用Boto3从S3 Bucket下载文件?

neekobn8  于 2023-01-06  发布在  Python
关注(0)|答案(2)|浏览(155)

我必须从我的S3 bucket下载一个文件到我的服务器上进行一些处理。bucket不支持直接连接,必须使用Pre-Signed URL
Boto3 Docs谈到了使用预先签名的URL来上传,但没有提到下载也是如此。

ajsxfq5m

ajsxfq5m1#

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

jtoj6r0c

jtoj6r0c2#

只是为了补充John上面的回答,并保存任何人的时间,文档确实提到了如何下载以及使用预先签名的URL上传:
如何下载文件:

import requests    # To install: pip install requests

url = create_presigned_url('BUCKET_NAME', 'OBJECT_NAME')
if url is not None:
    response = requests.get(url)

Python预签名URL文档:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html

相关问题