【发布时间】:2019-08-27 23:45:54
【问题描述】:
使用“aws/aws-sdk-php”:“^3.0@dev”
我正在创建一个图像共享网站,但不希望人们将我的 URL 复制到另一个网站以窃取我的内容/带宽。
我最初将对象存储为
return $s3->putObject([
'Bucket' => $bucket,
'Key' => $key,
'Body' => $file,
'ACL' => 'public-read',
]);
但我已经删除了“公开阅读”,所以现在下面的 URL 不再有效
https://mybucket-images.s3.us-west-1.amazonaws.com/' . $key);
我需要做什么来创建一个仍然可以在客户端缓存以访问对象的临时 URL?
我正在考虑的一件事是每周或每月更改一次密钥,但这需要我使用 cronjob 更新所有对象。一定有办法创建临时访问 URL?
【问题讨论】:
-
谁写入存储桶 - 存储桶权限是什么?如果您是唯一的作者,则不确定问题出在哪里 - 假设您发布的内容不是机密的,并且对随机读者来说没有什么价值。
-
我的后端将用户上传的图像写入存储桶。所有图片都是公开的,但我想防止人们将我的 S3 URL 复制到另一个站点。
-
因此,您正在尝试使客户可以访问从您的站点获取的 URL,但如果他们从其他站点读取 URL,则不能访问?
-
是的,我的网站会生成一个可以持续 30 天左右的 URL,但随后会过期并需要我的网站重新生成它。