我想生成没有过期的S3对象URL。
我不愿意将S3存储桶和对象设为私有,
我尝试使用lambda函数生成pr_signed url,但是它只能验证7天。
如果有人知道,请提供帮助。 预先感谢。
答案 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