从S3存储桶获取对象的AccessDenied

时间:2020-11-09 11:29:35

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

我正在尝试从另一个区域的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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您需要检查一些事情:

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