如何生成永久的s3对象/文件url(无过期)?

时间:2019-04-10 08:28:13

标签: amazon-web-services url amazon-s3 aws-lambda

我想生成没有过期的S3对象URL。

我不愿意将S3存储桶和对象设为私有,

我尝试使用lambda函数生成pr_signed url,但是它只能验证7天。

如果有人知道,请提供帮助。 预先感谢。

1 个答案:

答案 0 :(得分:0)

是的,最多可以流失604800秒(7天)。

但是

如果您必须公开读取ACL,并且将获得不过期的网址...

obj = s3.bucket(ENV['S3_BUCKET_NAME']).object(object_name)
obj.write(:file => image_location)
obj.acl = :public_read
obj.public_url.to_s

或者您可以在可在604800秒或之前运行的Cloud Watch中使用调度程序,并更新到期时间...

为此编写一个lambda

url = s3.generate_presigned_url(
    ClientMethod='get_object',
    Params={
        'Bucket': 'bucket-name',
        'Key': 'key-name'
    },
    ExpiresIn=604800
)

并在7天(10080)或之前在Cloud Watch Scheduler中运行它

aws events put-rule --schedule-expression "rate(10079 minute)" --name bef7day