Я пытаюсь использовать недавно объявленные 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.
Вот провал script, запускаемый в экземпляре 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()