如何在没有过期的情况下为s3照片创建URL?

时间:2017-03-08 00:50:24

标签: django amazon-web-services amazon-s3 boto3

我使用Django用户模型来存储我的用户。我的用户将使用通常的名称:用户名,密码。

以下是一个例子:

class UserProfile(models.Model):
    user = models.OneToOneField(User, primary_key=True)
    photo_url = models.CharField(max_length=200, blank=True, default='') # the url to fetch photo

我将需要一个字段来生成网址,这是他上传到S3的照片的网址,这样我的客户端就可以下载并显示它。

在boto3中生成不定网址的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

来自:Generating Presigned URLs。无法指定非过期的URL。对ExpiresIn参数使用大的int值。试试吧。

import boto3
import requests

# Get the service client.
s3 = boto3.client('s3')

# Generate the URL to get 'key-name' from 'bucket-name'
url = s3.generate_presigned_url(
    ClientMethod='get_object',
    Params={
        'Bucket': 'bucket-name',
        'Key': 'key-name'
    },
    ExpiresIn=9999999999
)

答案 1 :(得分:0)

实际上,我们不能在没有到期的情况下创建一个预签名的url,S3版本4的最大到期期限是一周,而对于v2,则可能更长。