如何获取上传到aws bucket的对象的下载链接?

hi3rlvi2  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(369)

我正在使用aws s3 boto3 要将文件上载到我的aws bucket,请调用 uploadtesting . 下面是一个示例实现:

import boto3

...

s3 = boto3.resource('s3')
s3.meta.client.upload_file('files/report.pdf', 'uploadtesting', 'report.pdf')

从aws s3控制台访问对象允许您查看对象url,但它不是可下载的链接。我想知道的是,我如何使用python打印出我刚刚上传的文件的可下载链接?

vlju58qv

vlju58qv1#

格式为:

https://BUCKET-NAME.s3.amazonaws.com/OBJECT-KEY

所以你的目标是:

https://uploadtesting.s3.amazonaws.com/report.pdf

没有提供生成此字符串的函数,因此请使用:

url = f'https://{bucket_name}.s3.amazonaws.com/{key}'
axkjgtzd

axkjgtzd2#

似乎您正在询问如何生成允许下载私有对象的url。
这可以通过生成一个AmazonS3预签名url来实现,该url在有限的时间内提供对私有s3对象的访问。
基本上,使用能够访问对象的凭据,您可以创建一个“已签名”的url。当AmazonS3收到此url时,它将验证签名,并在到期期限尚未结束时提供对对象的访问。
从预先签名的URL-boto3文档:

response = s3_client.generate_presigned_url('get_object',
                                                    Params={'Bucket': bucket_name,
                                                            'Key': object_name},
                                                    ExpiresIn=expiration)

这个 ExpiresIn 参数以秒表示。

相关问题