我必须从我的S3 bucket下载一个文件到我的服务器上进行一些处理。bucket不支持直接连接,必须使用Pre-Signed URL。Boto3 Docs谈到了使用预先签名的URL来上传,但没有提到下载也是如此。
S3 bucket
Pre-Signed URL
Boto3 Docs
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
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
2条答案
按热度按时间ajsxfq5m1#
另一个示例,请参见:Presigned URLs — Boto 3 documentation
您也可以使用AWS CLI生成预签名的URL:
参见:presign — AWS CLI Command Reference
jtoj6r0c2#
只是为了补充John上面的回答,并保存任何人的时间,文档确实提到了如何下载以及使用预先签名的URL上传:
如何下载文件:
Python预签名URL文档:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html