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