2015-10-23 7 views
27

Wenn ich einfach den folgenden Code ausführen, bekomme ich immer diesen Fehler.Boto3 Fehler: botocore.exceptions.NoCredentialsError: Anmeldeinformationen können nicht gefunden werden

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) 

Ich habe meine Credential-Datei in

gespeichert

C:\Users\myname\.aws\credentials, von wo aus Boto sollte meine Anmeldeinformationen lesen.

Ist meine Einstellung falsch?

Hier ist der Ausgang von 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

Können Sie die Debug-Ausgabe Post durch Zugabe von 'boto3.set_stream_logger ('botocore', Ebene = 'DEBUG')', bevor Sie Ihren Code? Es wird angezeigt, wo nach Anmeldeinformationen gesucht wird. – jamesls

+0

Es sieht so aus, als ob Boto nach einigen Stellen für die Anmeldekonfigurationsdatei sucht, aber aus irgendeinem Grund anscheinend nicht in mein Heimatverzeichnis schaut ... –

+1

Versuchen Sie, die Umgebungsvariable '' HOME'' so einzustellen, dass sie auf '' C: \ zeigt Users \ myname'' oder Einstellung "AWS_SHARED_CREDENTIALS_FILE", um direkt auf Ihre Anmeldeinformationsdatei zu verweisen. – garnaat

Antwort

13

Wenn Sie nach einer Alternative suchen, versuchen Sie Ihre Anmeldeinformationen Hinzufügen AmazonCLI

vom Terminaltyp mit: -

aws configure 

dann in Ihre Schlüssel und Region zu füllen.

+0

Das hat bei mir funktioniert. –

17

Ich hatte das gleiche Problem und stellte fest, dass das Format meiner ~/.aws/credentials Datei falsch war. enthält

Es ist mit einer Datei gearbeitet:

[default] 
aws_access_key_id=XXXXXXXXXXXXXX 
aws_secret_access_key=YYYYYYYYYYYYYYYYYYYYYYYYYYY 

Beachten Sie, dass der Profilname "[default]" sein muss. Einige offizielle Dokumente verweisen auf ein Profil namens "[credentials]", das für mich nicht funktionierte.

+0

Funktioniert auch auf Windows (C: \ Users \ User \ .aws \ credentials) –

+2

Sie können angeben, welches Profil in boto3 verwendet werden soll mit Session = boto3.Session (profile_name = ) –

26

versuchen Angabe Schlüssel manuell

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

Dieser Weg ist nützlich, wenn Sie direkt auf Django. Danke. – Joepreludian

+0

Dies ist gefährlicher, da Sie Ihre Geheimnisse in Ihren Code stecken, was in der Versionskontrolle enden könnte. –

Verwandte Themen