Amazon S3权限问题 - 如何一次为所有文件设置权限?

时间:2011-09-14 17:07:27

标签: amazon-s3 amazon-web-services

我使用亚马逊AWS管理控制台上传了一些文件。

我收到HTTP 403 Access denied错误。我发现我需要将权限设置为view

如何对存储桶中的所有文件执行此操作?

我知道可以为每个文件设置权限,但是当需要为每个人查看许多文件时,这是非常耗时的。

10 个答案:

答案 0 :(得分:114)

我建议您将存储桶策略 1 应用于要存储公共内容的存储区。这样您就不必为每个对象设置ACL。以下是一个策略示例,该策略将使存储桶 mybucket 中的所有文件都公开。

{
    "Version": "2008-10-17",
    "Id": "http better policy",
    "Statement": [
        {
            "Sid": "readonly policy",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"
        }
    ]
}

*中的"Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"允许递归。


1 请注意,Bucket Policy与IAM Policy不同。 (例如,如果您尝试在{I}策略中包含Principal,则会收到错误。)可以通过在AWS Web控制台中转到存储桶的根目录并展开属性>来编辑存储桶策略。权限。桶的子目录也具有属性>权限,但编辑存储桶策略

没有选项

答案 1 :(得分:5)

您可以选择要将其公开的目录。

按“更多”并将其标记为公开;它将使目录和所有文件可以公开访问。

答案 2 :(得分:4)

我使用Cloudberry Explorer来完成这项工作:)

答案 3 :(得分:4)

您只能修改唯一商品(桶或商品)的ACL,大豆必须逐个更改。

某些S3管理应用程序允许您将相同的ACL应用于存储桶中的所有项目,但在内部,它会逐个应用ACL。

如果以编程方式上传文件,在上传文件时指定ACL非常重要,因此您不必在以后修改它。使用S3管理应用程序(如Cloudberry,Transmit,...)的问题是,当您上传每个文件时,大多数使用默认ACL(私有只读)。

答案 4 :(得分:2)

我在通过程序(java)将文件上传到s3存储桶时遇到了同样的问题..

  

错误:请求的资源上没有“Access-Control-Allow-Origin”标头   因此,不允许原点“http://localhost:9000”访问。响应具有HTTP状态代码403

我添加了原始身份并更改了存储桶策略 CORS配置,然后一切正常。

答案 5 :(得分:1)

使用S3 Browser您可以使用gui更新权限,也可以递归。它是一种有用的工具,可以免费用于非商业用途。

答案 6 :(得分:1)

要公开大量文件,请执行以下操作:

  1. 转到S3 web interface
  2. 打开所需的存储桶
  3. 点击列表左侧的复选框
  4. ,选择所需的文件和文件夹
  5. 点击列表顶部的«更多»按钮,点击«公开»
  6. 点击«公开»确认。尽管警告说“......读取此对象,读取和写入权限”,但文件将没有公共写入权限。

答案 7 :(得分:1)

您可以使用aws cli在每个文件上设置ACL:

BUCKET_NAME=example
BUCKET_DIR=media
NEW_ACL=public-read

aws s3 ls $BUCKET_NAME/$BUCKET_DIR/ | \
awk '{$1=$2=$3=""; print $0}' | \
xargs -t -I _ \
aws s3api put-object-acl --acl $NEW_ACL --bucket $BUCKET_NAME --key "$BUCKET_DIR/_"

答案 8 :(得分:0)

Transmit 5

我想在这里为已经拥有名为Transmit by Panic的精美FTP应用程序的潜在macOS用户添加此内容。

我已经有了恐慌,它支持S3存储桶(不知道它的版本是什么,但我认为升级是免费的)。它还支持递归更新读写权限。

您只需右键单击要更新的目录,然后选择要将其设置为的读写权限。

它看起来不是很快但你可以通过Window>打开日志文件。成绩单,所以你至少知道它在做什么。

答案 9 :(得分:0)

使用AWS policy generator生成适合您需要的策略。策略生成器中的主体应该是用于访问对象的IAM用户/角色。 资源ARN应该为arn:aws:s3:::mybucket/sub/dirs/are/supported/*

下一步,单击“添加语句”并继续。您最终将获得一个表示策略的JSON。将其粘贴到“ s3存储桶策略管理”部分中,该部分位于“ AWS的s3存储桶页面->权限->存储桶策略”中。