Не удается получить s3 bucket 403 из-за InvalidAccessKey, но работает из CLI - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь получить доступ к корзине S3 через boto и получаю 403. Этот код:

from boto.s3.connection import  S3Connection
conn = S3Connection()
bucket = conn.get_bucket('my-bucket')
files = bucket.list()

Возвращает 403 в строке get_bucket (я удалил значения)

<Error>
    <Code>InvalidAccessKeyId</Code>
    <Message>The AWS Access Key Id you 
    provided does not exist in our records.</Message>
    <AWSAccessKeyId>*** </AWSAccessKeyId>
    <RequestId>***</RequestId>
    <HostId>***</HostId>
</Error>

Я видел ответы о настройке validate = False, как этот boto s3 Bucket и get_bucket , но затем я получаю ту же ошибку на следующей строке при попытке вывести список bucket.

Если я запускаю команду CLI

aws s3api list-objects --bucket my-bucket

, я получаю список содержимого.

Если я запускаю

aws configure list --profile default

Конфигурация содержит точно такой же идентификатор доступа, который есть в сообщении об ошибке в XML.Других профилей не существует, поэтому мне интересно, как он работает с точно таким же ключом от CLI, но не с boto.

Есть идеи?

1 Ответ

0 голосов
/ 08 июня 2018

Мы используем федеративный доступ, и мне помог комментарий, спрятанный на форуме AWS.

Если вы используете федеративных пользователей с boto, вам также необходимо передать маркер безопасности.Конструктор по умолчанию S3Connection () не пропускает это, поэтому вам нужно сделать это самостоятельно:

conn = S3Connection(aws_access_key_id='YOURKEYID', 
aws_secret_access_key='YOURSECRETKEY', security_token='YOURTOKEN')

Тогда он работает.

...