我有一个s3存储桶,其中包含包含不同网站的单个文件夹。我想生成一个预先签名的URL来访问特定的文件夹,但是我想让url允许访问该文件夹中的所有对象。这可能吗?
我使用了ruby aws-sdk gem v2。
我现有的代码如下所示
def get_object_url(bucket_name, object_name)
res = Aws::S3::Resource::new
obj = res.bucket(bucket_name).object(object_name)
exp = 1.day
url = obj.presigned_url(:get, {
expires_in: exp,
virtual_host: true
})
url
end
将文件夹名称作为object_name传递不起作用。
答案 0 :(得分:8)
不,S3并没有真正的文件夹概念。文件夹是"创建"使用对象路径的片段。它们不是独立于物体而存在的。
答案 1 :(得分:1)
我最近遇到了这个问题,我可以使用cloudfront找到一个针对签名网址的自定义策略的解决方案。
有一些优点和缺点,主要的一点是你不需要为每个对象签名所以更快更快你需要很多对象。但它就像在流量之外。
答案 2 :(得分:0)
我的解决方法是将文件和文件夹结构压缩到存档(如 zip)中,然后将该单个对象(文件)上传到预先签名的 URL。