Ich versuche, die kürzlich von AWS angekündigte Funktion "IAM-Rollen für EC2" zu verwenden, mit der Sicherheitsnachweise automatisch an EC2-Instanzen übermittelt werden können. (siehe http://aws.amazon.com/about-aws/whats-new/2012/06/11/Announcing-IAM-Roles-for-EC2-instances/).BOTO-Problem mit IAM-Rolle
Ich habe eine Instanz mit einer IAM-Rolle wie beschrieben eingerichtet. Ich kann auch (scheinbar) richtige Zugangsschlüssel/Zugangsdaten mit curl bekommen.
Boto führt jedoch keinen einfachen Aufruf wie "get_all_buckets" aus, obwohl ich ALLE S3-Berechtigungen für die Rolle aktiviert habe.
Der Fehler, den ich bekommen ist „Die AWS Access Key Id Sie nicht in unseren Unterlagen zur Verfügung gestellt existieren“
jedoch der Zugriffsschlüssel in dem Fehler aufgelistet übereinstimmt, die ich von curl bekommen.
Hier ist das fehlerhafte Skript auf einer EC2-Instanz mit einer IAM-Rolle ausführen angebracht, die alle S3-Berechtigungen gibt:
import urllib2
import ast
from boto.s3.connection import S3Connection
resp=urllib2.urlopen('http://169.254.169.254/latest/meta-data/iam/security-credentials/DatabaseApp').read()
resp=ast.literal_eval(resp)
print "access:" + resp['AccessKeyId']
print "secret:" + resp['SecretAccessKey']
conn = S3Connection(resp['AccessKeyId'], resp['SecretAccessKey'])
rs= conn.get_all_buckets()
Für die manuelle Vorgehensweise, haben Sie Recht, Hinzufügen der Security_Token behoben. Vielen Dank! Ich habe dich als "Antwort" dafür markiert. – Nils
Die vereinfachte Version, die Sie gepostet haben, funktioniert auch nach dem Upgrade auf 2.5.1. Also wenn ich dir 2 Anerkennungen geben könnte, würde ich es tun! – Nils
Schön, dass es jetzt für dich funktioniert. Ich mag das neue IAM Roles-Feature, es ist wirklich glatt. – garnaat