AWS S3存储桶权限 - 拒绝访问

Dav*_*vid 30 amazon-s3 amazon-web-services

我试图允许自己下载S3存储桶中的现有文件.我修改了Bucket Policy,如下所示:

        {
        "Sid": "someSID",
        "Action": "s3:*",
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::bucketname/AWSLogs/123123123123/*",
        "Principal": {
            "AWS": [
                "arn:aws:iam::123123123123:user/myuid"
            ]
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的理解是,添加到策略应该为我的帐户"myuid"提供"bucketname"的完全权限,包括该桶中已有的所有文件.但是,当我尝试通过控制台中出现的链接下载任何这些文件时,我仍然会收到Access Denied错误.

有什么想法吗?

Kar*_*bur 19

大卫,你是对的,但我发现,除了下面的bennie所说的,你还必须向"认证用户"授予视图(或任何你想要的访问权限). 在此输入图像描述

但更好的解决方案可能是编辑用户的策略以仅授予对存储桶的访问权限:

{
   "Statement": [
    {
      "Sid": "Stmt1350703615347",
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::mybucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": ["arn:aws:s3:::mybucket"],
      "Condition": {}
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

第一个块向存储桶中的所有元素授予所有S3权限.第二个块授予存储桶本身的列表权限.


小智 18

步骤1

单击您的存储桶名称,然后在权限选项卡下,确保未选中阻止新的公共存储管理策略

在此输入图像描述

第2步

然后,您可以应用您的存储桶策略 在此输入图像描述

希望有所帮助

  • 这不是正确的方法 (4认同)
  • 我只是错过了政策。我添加了像你一样的那个并让它工作。我希望我的存储桶可供公众查看。这是正确的配置吗? (3认同)

Die*_*ezú 9

在 s3 中显示网站静态:

未勾选的公共阻塞桶

这是存储桶策略:

{
  "Version":"2012-10-17",
  "Statement":[{
  "Sid":"PublicReadGetObject",
    "Effect":"Allow",
  "Principal": "*",
  "Action":["s3:GetObject"],
  "Resource":["arn:aws:s3:::example-bucket/*"
  ]
  }
]
}
Run Code Online (Sandbox Code Playgroud)


小智 6

改变资源arn:aws:s3:::bucketname/AWSLogs/123123123123/*arn:aws:s3:::bucketname/*对有充分的权利bucketname


var*_*jsi 5

使用以下方法上传任何文件以TransferUtility在 Android 中使用公共可读形式。

transferUtility.upload(String bucketName, String key, File file, CannedAccessControlList cannedAcl)
Run Code Online (Sandbox Code Playgroud)

例子

transferUtility.upload("MY_BUCKET_NAME", "FileName", your_file, CannedAccessControlList.PublicRead);
Run Code Online (Sandbox Code Playgroud)