it-swarm.cn

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

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

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

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

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

75
Rails beginner

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

{
    "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不同。 (例如,如果您尝试在IAM策略中包含Principal,则会收到错误。)可以通过在AWS Web控制台中转到存储桶的根目录并展开“属性”>“权限”来编辑存储桶策略。存储桶的子目录也具有“属性”>“权限”,但没有选项 Edit bucket policy

115
cloudberryman

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

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

5
mohammad zein

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

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

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

4
Daniel García

我用 Cloudberry Explorer 来做这个工作:)

4
Rails beginner

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

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

我添加了 Origin identity 并更改了 bucket策略 CORS配置 然后一切正常。

2
Manju Shingadi

您可以使用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/_"
1
moppag

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

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

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

1
Paul Siersma

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

接下来,单击“添加语句”并按照说明操作。你最终会得到一个代表政策的JSON。将其粘贴到s3存储桶策略管理部分,该部分位于“您在AWS中的s3存储桶页面 - >权限 - >存储桶策略”中。

0
user2906555

传输5

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

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

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

它看起来并不快,但您可以通过Window> Transcript打开日志文件,这样您至少知道它正在做某事。

0
Joshua Pinter