gpt4 book ai didi

amazon-web-services - 如何允许授予对上传到 AWS S3 的对象的公共(public)读取访问权限?

转载 作者:行者123 更新时间:2023-12-02 16:46:29 25 4
gpt4 key购买 nike

我创建了一个策略,允许访问我的帐户中的单个 S3 存储桶。然后,我创建了一个仅包含此策略的组和一个属于该组的用户。

用户可以按预期查看、删除文件并将文件上传到存储桶。但是,用户似乎无法授予对上传文件的公共(public)读取权限

enter image description here

当选择授予对此对象的公共(public)读取访问权限选项时,上传会失败。

该存储桶托管一个静态网站,我希望允许前端开发人员上传文件并将其公开。

用户角色的策略如下:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": "arn:aws:s3:::my-bucket"
},
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}

当 IAM 用户尝试授予对上传文件的公共(public)访问权限时,会发生以下情况: enter image description here

代理错误似乎无关,但本质上上传被卡住并且没有任何反应。如果他们不选择授予公共(public)访问选项,上传会立即完成(尽管也会显示代理错误)。

最佳答案

为了重现您的情况,我执行了以下操作:

  • 使用默认设置(阻止公共(public)访问 = 开启)创建了新的 Amazon S3 存储桶
  • 创建了 IAM 用户(未附加任何策略)
  • 创建了 IAM 组(未附加任何政策)
  • 已将 IAM 用户添加到 IAM 组
  • 将您的政策(来自问题)作为内联政策附加到 IAM 组(更新存储桶名称)
  • 以新 IAM 用户身份登录 Amazon S3 管理控制台

此时,用户收到拒绝访问错误,因为他们无权列出所有 Amazon S3 存储桶。因此,控制台无法使用。

相反,我运行了以下 AWS CLI 命令:

aws s3 cp foo.txt s3://new-bucket/ --acl public-read

结果是:

An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

但是,操作成功:

aws s3 cp foo.txt s3://new-bucket/

这意味着 --acl 是被拒绝的组件。

然后,我转到该存储桶的阻止公共(public)访问,并关闭了名为“阻止对通过新访问控制列表 (ACL) 授予的存储桶和对象的公共(public)访问”的选项。我的设置是:

Block Public Access

然后我再次运行此命令:

aws s3 cp foo.txt s3://new-bucket/ --acl public-read

成功了!

为了验证这一点,我返回阻止公共(public)访问并打开所有选项(通过顶部复选框)。我重新运行该命令,但再次访问被拒绝确认原因是阻止公共(public)访问设置

底线:关闭第一个阻止公共(public)访问设置。

关于amazon-web-services - 如何允许授予对上传到 AWS S3 的对象的公共(public)读取访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60348163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com