s3.meta.client.head_bucket возвращает код ошибки 403 - PullRequest
0 голосов
/ 20 декабря 2018

Я очень новичок в пакете 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, подключающегося к соответствующему кластеру.

1 Ответ

0 голосов
/ 02 августа 2019

может означать, что у пользователя нет авторизации S3

. Вы можете создать группу авторизации и добавить пользователя в группу в консоли aws.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...