我使用亚马逊AWS管理控制台上传了一些文件。
我收到HTTP 403 Access denied
错误。我发现我需要将权限设置为view
。
如何对存储桶中的所有文件执行此操作?
我知道可以为每个文件设置权限,但是当需要为每个人查看许多文件时,这是非常耗时的。
答案 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)
要公开大量文件,请执行以下操作:
答案 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 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存储桶页面->权限->存储桶策略”中。