我试图使用AWS”最近公布的‘IAM角色EC2’功能,它可以让安全证书自动获取传递到EC2实例。 (见http://aws.amazon.com/about-aws/whats-new/2012/06/11/Announcing-IAM-Roles-for-EC2-instances/ )。
我所描述的建立一个实例与IAM角色。 我还可以得到卷曲(貌似)正确的访问密钥/凭据。
然而,博托不能做一个简单的调用,比如“get_all_buckets”,即使我已经打开了角色的所有S3权限。
我得到的错误是“你所提供的AWS访问密钥并不在我们的记录存在”
然而,在错误中列出的访问密钥相匹配的一个我从卷曲得到。
这里是失败的脚本,在EC2实例与给所有S3权限连接的IAM角色运行:
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()