2015-10-23 1 views
27

Lorsque j'exécute simplement le code suivant, j'obtiens toujours cette erreur.Boto3 Erreur: botocore.exceptions.NoCredentialsError: Impossible de localiser les informations d'identification

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) 

J'ai sauvé mon fichier de référence dans

C:\Users\myname\.aws\credentials, d'où Boto devrait lire mes lettres de créance.

Mon réglage est-il incorrect?

Voici la sortie de 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

Pouvez-vous poster la sortie de débogage en ajoutant 'boto3.set_stream_logger ('botocore', niveau = 'DEBUG')' avant votre code? Il montrera où il cherche des informations d'identification. – jamesls

+0

il semble que Boto cherche assez peu d'emplacements pour le fichier de configuration des informations d'identification, mais ne regarde apparemment pas dans mon répertoire personnel pour une raison quelconque ... –

+1

Essayez de définir la variable d'environnement '' HOME'' pour pointer vers '' C: \ Users \ myname'' ou paramètre '' AWS_SHARED_CREDENTIALS_FILE'' pour pointer directement sur votre fichier d'informations d'identification. – garnaat

Répondre

13

Si vous êtes à la recherche d'une autre façon, essayez d'ajouter vos informations d'identification à l'aide AmazonCLI

du type de terminal: -

aws configure 

puis remplissez vos clés et de la région.

+0

Cela a fonctionné pour moi. –

17

J'ai eu le même problème et j'ai découvert que le format de mon fichier ~/.aws/credentials était erroné.

Il a travaillé avec un fichier contenant:

[default] 
aws_access_key_id=XXXXXXXXXXXXXX 
aws_secret_access_key=YYYYYYYYYYYYYYYYYYYYYYYYYYY 

Notez que le nom du profil doit être "[default]". Certains documents officiels font référence à un profil nommé "[credentials]", ce qui n'a pas fonctionné pour moi.

+0

Fonctionne également sous Windows (C: \ Users \ User \ .aws \ credentials) –

+2

Vous pouvez spécifier quel profil utiliser dans boto3 en utilisant session = boto3.Session (nom_profil = ) –

26

essayez de spécifier manuellement les clés

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

Cette méthode est utile lorsque vous manipulez directement sur Django. Je vous remercie. – Joepreludian

+0

Ceci est plus dangereux car vous mettez vos secrets dans votre code qui pourrait se retrouver dans le contrôle de version. –