Использование boto3 с временными учетными данными - PullRequest
0 голосов
/ 20 октября 2019

Я хотел бы использовать boto3 для загрузки файла в AWS S3. Но у меня есть только временный доступ к S3, предоставленный веб-сервисом, который не находится под моим контролем. Мне предоставляется следующая учетная информация:

    {
        "key": <string>,
        "x-amz-algorithm": <string>,
        "x-amz-credential": <string>,
        "x-amz-date": <string>,
        "policy": <string>,
        "x-amz-signature": <string>
    }

Насколько я знаю, эту информацию можно использовать, например, для запроса POST. Но я не смог выяснить, как использовать эту информацию в сочетании с командой boto3

s3 = boto3.client('s3')

, которая обычно требует aws_access_key_id и aws_secret_access_key . Этот пост здесь предполагает, что это должно быть возможно:

Вместо того, чтобы подписывать URL-адреса (которые обычно используются при совершении вызовов через веб-браузер), вы должны генерировать временные учетные данные черезСлужба токенов безопасности AWS (STS)

[...]

Приложение Python будет использовать эти учетные данные при вызове boto

Но я не смог выяснить, как предоставить клиенту boto временные учетные данные.

1 Ответ

2 голосов
/ 20 октября 2019

Может показаться, что вы получили предварительно подписанные URL-адреса Amazon S3 . Это способ предоставления временного доступа к определенной команде Amazon S3 с хешированной подписью, которая авторизует запрос.

Хотя для создания запроса использовались ключ доступа и секретный ключ, вы не можете извлечь Секретный ключ из запроса. (Скорее, он использовался для создания подписи.) Поэтому вы не можете использовать boto3, чтобы сделать запрос, используя предоставленную информацию. Это полностью намеренно.

Создание временных учетных данных с помощью службы маркеров безопасности отличается от создания предварительно подписанного URL-адреса. STS предоставит учетные данные, которые могут быть использованы boto3. Однако это не то, что они сделали, предоставив вам информацию о доступе.

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