s3上的文件权限

我在S3上有一个名为xyz的桶。 在桶中,我有786 / html / index.html中的html文件和786 / html / images /中的多个图像。 文件夹和文件拥有对所有者的完全控制权限。 我正在使用aws ruby​​-sdk为786 / html / index.html生成url,并且页面工作正常,但786 / html / images中的图像未在786 / html / index.html中呈现。 它在浏览器控制台上给我出现以下错误: -

Failed to load resource: the server responded with a status of 403 (Forbidden) 

现在我给了786 / html / images的公开阅读权限。 786和786 / html仅拥有所有者的权限。 现在786 / html / index.html能够渲染图像,但现在图像也可以通过public_url访问。 我很困惑,因为786和786 / html没有公共权限仍然可以访问图像。

一个可能的解决方案可以是将AwsAccessKey和签名附加到index.html中存在的图像源。 但是,因为我们有多个图像,所以我们需要一个通用签名。

建议需要

谢谢,Apurva Mayank


S3是一个对象存储。 它不是一个分层文件系统,实际上并没有“文件夹”。

对象键可以具有按照惯例用/分隔的前缀。

这给出了文件夹的错觉,但这与存在实际的层次结构不一样。 每个对象的权限都是独立的,受制于策略(也可以包含前缀引用)。

但要说“786和786 / html没有公共权限”,但“786 / html / images”在S3中没有公共权限,因为这些“文件夹”下的对象实际上并不与它们关联。

无论您使用什么来处理您的存储桶,都可能给您一种其他方式的印象,或者可能是在管理对象“在文件夹中”的权限,并给您这些权限被继承的印象。

如果您的目的是仅使用签名的URL来使html文件可见,或者仅使用该页面使该图像可见(并且不能自行下载),那么您的代码还需要完全限定并签署url的url嵌入式图像(以及该文件,如果您希望它也是私有的)。


当您创建图像时,请添加以下标题:

x-amz-acl: public-read

更多关于ACL的信息:

http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl

另外,如果您发现Content-Type错误,则标题将解决此问题。

Content-Type: image/jpeg

链接地址: http://www.djcxy.com/p/16699.html

上一篇: Permissions of files on s3

下一篇: Can't send message to FB