如何使用它在boto3中使用预先签名的URL获取S3中的对象?

时间:2017-03-29 06:08:50

标签: python amazon-s3 boto3

我使用boto3在我的一个存储桶中为对象生成了一个预先签名的网址:

s3.generate_presigned_url('get_object', Params = {'Bucket': 'https://s3.amazonaws.com/<>', 'Key': '<>.json'}, ExpiresIn = 100)

现在,我如何在boto3中get_objectThe boto3's get_object reference没有为预先签名的网址指定任何参数。

那么,如何在S3中使用它在boto3中预先签名的网址获取该对象?

2 个答案:

答案 0 :(得分:1)

如果您有预先签名的URL,则不需要boto - 您可以使用任何HTTP用户代理库下载该对象。

相反,如果您有boto和凭据,则不需要预先签名的URL。

预先签名的URL旨在允许拥有凭据的其他人在没有凭据的情况下启用其他没有凭据的人,而不会将凭据公开给他们。

预先签名的URL包括access-key-id和可能的会话令牌,但不包括access-key-secret,并且在计算上不可能进行逆向工程......在这个意义上,他们做不要以允许拥有预签名URL的实体将相关凭据用于任何其他目的的方式公开凭证。

答案 1 :(得分:1)

您可以使用此代码获取结果。

import boto3
s3_client = boto3.client('s3')
resp = s3_client.generate_presigned_url('get_object', Params = {'Bucket': 'your-s3-bucket', 'Key': 'filepath/inside-bucket/filename.json'}, ExpiresIn = 100)
print(resp)

如有疑问,请告诉我。