2016-10-19 6 views
0

Ich habe diesen Schnipsel eine Datei auf S3 hochladenS3-Anmeldeinformationen für einen öffentlichen Bucket?

s3 = boto3.resource('s3') 
s3.Object('bucketname', timestamped_filename).put(Body=open(FILE_SAVE_PATH, 'rb')) 

mein Eimer hat eine Lösch-/Upload Erlaubnis für alle, so funktioniert es auf meinem Windows-Rechner. Allerdings, wenn ich versuche, den gleichen Code auf meinem Mac laufen wirft

botocore.exeptions.NoCredentialsError: Unable to locate credentials

Ist dieses Verhalten normal? Und welche Art von Anmeldeinformationen kann ich möglicherweise bereitstellen, wenn ich auf einen öffentlichen Bucket zugreife?

Vielen Dank.

Antwort

0

Bei einem API-Aufruf an AWS müssen gültige Anmeldeinformationen angegeben werden. Diese Anmeldeinformationen sind einem IAM-Benutzer zugeordnet und gewähren Zugriff auf AWS-Dienste.

Wenn API-Aufrufe zu machen (oder mit den AWS Command-Line Interface (CLI)) von einer Amazon EC2-Instanz können diese Anmeldeinformationen an die EC2-Instanz gewährt werden, indem eine IAM-Rolle der Instanz zur Startzeit zuweisen.

Wenn Sie von einem Nicht-EC2-Computer aus anrufen, müssen die Anmeldeinformationen über eine Konfigurationsdatei oder Umgebungsvariablen bereitgestellt werden.

Offenbar ist Ihr Windows-Computer entweder eine EC2-Instanz mit einer Rolle oder eine lokale Konfigurationsdatei mit gültigen Anmeldeinformationen. und es sieht so aus, als ob dein Mac keines von beiden hat.

Siehe: boto3 Credentials documentation

Verwandte Themen