Я пытаюсь использовать недавно анонсированную функцию AWS «Роли IAM для EC2», которая позволяет автоматически получать учетные данные безопасности. доставлены в инстансы EC2 (см. http://aws.amazon.com/about-aws/whats-new/2012/06/11/Announcing-IAM-Roles-for-EC2-instances/).
Я настроил экземпляр с ролью IAM, как описано. Я также могу получить (на первый взгляд) правильный ключ доступа / учетные данные с помощью curl.
Однако boto не может выполнить простой вызов, например "get_all_buckets", хотя я включил ВСЕ разрешения S3 для роли
Ошибка, которую я получаю: «Предоставленный вами идентификатор ключа доступа AWS не существует в наших записях»
Однако ключ доступа, указанный в ошибке, совпадает тот, который я получаю от curl.
Вот неудачный сценарий, запущенный на экземпляре EC2 с прикрепленной ролью IAM, которая дает все разрешения S3:
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()