首页 > 解决方案 > s3.meta.client.head_bucket 返回错误代码 403

问题描述

我对这个boto3包很陌生,我正在尝试测试我在这里try/except找到的一个简单块,以确定 s3 存储桶是否存在。到目前为止,我有:

s3 = boto3.resource(
    "s3",
    aws_access_key_id=self.settings['CREDENTIALS']['aws_access_key_id'],
    aws_secret_access_key=self.settings['CREDENTIALS']['aws_secret_access_key'],
)

bucket = s3.Bucket(self.settings['S3']['bucket_test'])

for bucket_in_all in boto3.resource('s3').buckets.all():
    if bucket_in_all.name == self.settings['S3']['bucket_test']:
        print ("Bucket {} verified".format(self.settings['S3']['bucket_test'])) # This is triggered!

try:
    s3.meta.client.head_bucket(Bucket=self.settings['S3']['bucket_test'])
    print("Bucket Exists!")
    return True
except botocore.exceptions.ClientError as e:
    # If a client error is thrown, then check that it was a 404 error.
    # If it was a 404 error, then the bucket does not exist.
    error_code = int(e.response['Error']['Code'])
    if error_code == 403:
        print("Private Bucket. Forbidden Access!")
        return True
    elif error_code == 404:
        print("Bucket Does Not Exist!")
        return False

当我循环时找到存储桶buckets.all(),但不知何故失败s3.meta.client.head_bucket,返回错误 403。为什么?我的最终目标是能够查看 s3 存储桶,并确定那里有哪些文件。我从集群外部连接,即脚本当前不在 AWS“云”内运行,而是从我的 MBP 连接到相关集群。

标签: python-3.xamazon-s3boto3

解决方案


可能是该用户没有 S3 的身份验证

您可以在 aws 控制台中创建身份验证组并将用户添加到组中。


推荐阅读