Ошибка подключения boto3 s3: при вызове операции ListBuckets произошла ошибка (SignatureDoesNotMatch) - PullRequest
0 голосов
/ 27 декабря 2018

Я использую пакет boto3 для подключения извне кластера s3 (т. Е. Сценарий в настоящее время выполняется не в «облаке» AWS, а из моего MBP, подключающегося к соответствующему кластеру).Мой код:

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']))

Теперь я получаю это сообщение об ошибке:

botocore.exceptions.ClientError: An error occurred (SignatureDoesNotMatch) when calling the ListBuckets operation

Мне известно о последовательности проверки учетных данных aws, и я пробовал разные вариантымои переменные окружения и ~/.aws/credentials, и я знаю, что учетные данные в соответствии с моим сценарием .py должны быть переопределены, однако я все еще вижу это сообщение об ошибке SignatureDoesNotMatch.Любые идеи, где я могу пойти не так?Я также попытался:

  # Create a session
    session = boto3.session.Session(
        aws_access_key_id=self.settings['CREDENTIALS']['aws_access_key_id'],
        aws_secret_access_key=self.settings['CREDENTIALS']['aws_secret_access_key'],
        aws_session_token=self.settings['CREDENTIALS']['session_token'],
        region_name=self.settings['CREDENTIALS']['region_name']
    )

s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
    print(bucket.name)

... однако я также вижу ту же ошибку трассировки.

1 Ответ

0 голосов
/ 28 декабря 2018

На самом деле, на это частично ответили @John Rotenstein и @bdcloud, тем не менее, мне нужно быть более конкретным ...

Следующий код в моем случае не был необходим и вызывал сообщение об ошибке:

  # Create a session
    session = boto3.session.Session(
        aws_access_key_id=self.settings['CREDENTIALS']['aws_access_key_id'],
        aws_secret_access_key=self.settings['CREDENTIALS']['aws_secret_access_key'],
        aws_session_token=self.settings['CREDENTIALS']['session_token'],
        region_name=self.settings['CREDENTIALS']['region_name']
    ) 

Теперь учетные данные, хранящиеся в self.settings, отражают ~/.aws/credentials.Странно (как и на прошлой неделе, когда произошло обратное), у меня теперь есть доступ.Может случиться так, что простая перезагрузка моего ноутбука означала, что мои новые учетные данные (так как я обновил их вчера) в ~/.aws/credentials были тогда «приняты».

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