2015-10-23 2 views
27

Когда я просто запускаю следующий код, я всегда получаю эту ошибку.Boto3 Ошибка: botocore.exceptions.NoCredentialsError: Не удалось найти учетные данные

s3 = boto3.resource('s3') 
    bucket_name = "python-sdk-sample-%s" % uuid.uuid4() 
    print("Creating new bucket with name:", bucket_name) 
    s3.create_bucket(Bucket=bucket_name) 

Я сохранил свое удостоверение файл в

C:\Users\myname\.aws\credentials, откуда Boto следует читать мои полномочия.

Является ли моя установка неправильной?

Вот результат от boto3.set_stream_logger('botocore', level='DEBUG').

2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Skipping environment variable credential check because profile name was explicitly set. 
2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Looking for credentials via: env 
2015-10-24 14:22:28,773 botocore.credentials [DEBUG] Looking for credentials via: shared-credentials-file 
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: config-file 
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: ec2-credentials-file 
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: boto-config 
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: iam-role 
+1

Вы можете разместить отладочный вывод, добавляя 'boto3.set_stream_logger ('botocore', уровень = 'DEBUG')' перед кодом? Он покажет, где он ищет учетные данные. – jamesls

+0

кажется, что Boto ищет довольно мало мест для конфигурационного файла учетных данных, но, по-видимому, по какой-то причине не смотрит в мой домашний каталог ... –

+1

Попробуйте установить переменную среды '' HOME'' для указания на '' C: \ Пользователи \ myname'' или установите '' AWS_SHARED_CREDENTIALS_FILE'', чтобы указать прямо на ваш файл учетных данных. – garnaat

ответ

13

Если вы ищете альтернативный способ, попробуйте добавить свои учетные данные с помощью AmazonCLI

от типа терминала: -

aws configure 

затем заполнить ключи и региона.

+0

Это сработало для меня. –

17

У меня была такая же проблема, и выяснилось, что формат моего файла ~/.aws/credentials был неправильным.

Он работал с файлом, содержащим:

[default] 
aws_access_key_id=XXXXXXXXXXXXXX 
aws_secret_access_key=YYYYYYYYYYYYYYYYYYYYYYYYYYY 

Обратите внимание, что имя профиля должно быть "[default]". В некоторых официальных документах ссылается на профиль с именем «[credentials]», который не работает для меня.

+0

Работы на окнах тоже (C: \ Users \ User \ .aws \ credentials) –

+2

вы можете указать, какой профиль использовать в boto3, используя session = boto3.Session (profile_name = ) –

26

попробовать задающие ключи вручную

s3 = boto3.resource('s3', 
     aws_access_key_id=ACCESS_ID, 
     aws_secret_access_key=ACCESS_KEY) 
+0

Этот способ полезен при обращении непосредственно на Джанго. Спасибо. – Joepreludian

+0

Это более опасно, поскольку вы вкладываете свои секреты в свой код, который может оказаться в управлении версиями. –