【问题标题】:AccessDenied for Get Objects from S3 Bucket从 S3 存储桶获取对象的访问被拒绝
【发布时间】:2021-02-21 07:44:38
【问题描述】:

我正在尝试从另一个区域的 SageMaker 容器访问 S3 存储桶。

我可以使用以下代码列出 S3 存储桶中的所有文件夹:

import boto3 
s3 = boto3.resource('s3', region_name='us-east-1') 
bucket = s3.Bucket('bucket-name') 
for my_bucket_object in bucket.objects.all():
    print(my_bucket_object)

但是,get_object 失败,消息访问被拒绝。已向 S3 存储桶提供所有权限。

s3 = boto3.client('s3',region_name = 'us-east-1')
obj = s3.get_object(Bucket='bucket-name', Key = '2019/3/')

错误信息如下:

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

有人可以指导为什么会这样吗?谢谢。

【问题讨论】:

  • 您可能还拥有对存储桶内的各个文件的权限,因此对象级 ACL 也可以允许任何人访问该对象。
  • 如何授予子文件夹和文件的权限?

标签: amazon-web-services amazon-s3 boto3 amazon-sagemaker


【解决方案1】:

您可以复制您在存储桶上使用的粘贴策略文件吗?使用策略文件,您还可以控制文件夹级别的所有访问。

【讨论】:

    【解决方案2】:

    您需要检查几件事:

    1. 您的 IAM 用户是否拥有s3:GetObject 权限(或s3:*
    2. 是否存在可能限制访问的存储桶策略?

    【讨论】:

      猜你喜欢
      • 2019-02-03
      • 2018-01-10
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多