Как исправить ошибку «AuthorizationHeaderMalformed при вызове операции GetObject» в AWS s3 boto3 - PullRequest
0 голосов
/ 05 октября 2019

Когда я пытаюсь запустить очень простой скрипт Python для получения объекта из корзины s3:

import boto3

s3 = boto3.resource('s3',
 region_name="eu-east-1",
 verify=False,
 aws_access_key_id="QxxxxxxxxxxxxxxxxxxxxxxxxFY=",
 aws_secret_access_key="c1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxYw==")

obj = s3.Object('3gxxxxxxxxxxs7', 'dk5xxxxxxxxxxn94')
result = obj.get()['Body'].read().decode('utf-8')

print(result)

Я получаю сообщение об ошибке:

$ python3 script.py

Traceback (most recent call last):
  File "script.py", line 7, in <module>
    result = obj.get()['Body'].read().decode('utf-8')
  File "//anaconda3/lib/python3.7/site-packages/boto3/resources/factory.py", line 520, in do_action
    response = action(self, *args, **kwargs)
  File "//anaconda3/lib/python3.7/site-packages/boto3/resources/action.py", line 83, in __call__
    response = getattr(parent.meta.client, operation_name)(**params)
  File "//anaconda3/lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "//anaconda3/lib/python3.7/site-packages/botocore/client.py", line 661, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: 

An error occurred (AuthorizationHeaderMalformed) 
when calling the GetObject operation:
 The authorization header is malformed; the authorization component 
"Credential=QUtJxxxxxxxxxxxxxxxxxlZPUFY=/20191005/us-east-1/s3/aws4_request" 
is malformed.

Я не уверен, что может бытьвызвав это, стоит добавить, что:

  • Я не знаю, что такое область сегмента (не спрашиваю почему), но я попытался вручную подключиться ко всем из них (изменив имя региона по умолчанию вКоманда в каждый регион) и без успеха.
  • У меня нет доступа к конфигурации корзины. И все, что есть в консоли aws. У меня просто есть идентификатор ключа, секрет, имя корзины и имя объекта.

1 Ответ

1 голос
/ 05 октября 2019

Идентификатор ключа доступа AWS всегда начинается с AKIA для пользователей IAM или ASIA для временных учетных данных из службы маркеров безопасности, как указано в Идентификаторы IAM в Руководство пользователя по управлению учетными данными и доступом AWS .

Используемое вами значение, по-видимому, не является одним из них, поскольку оно начинается с QUtJ ... не то значение, которое вы должны использовать здесь. Похоже, вы используете что-то, что не является AWS-Access-Key-ID.

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