我无法使用与 IAM角色从 EC2 实例对 AWS Simple Queue Service (SQS)进行身份验证> Boto 2.38 库(和 Python 3 )。
我无法找到关于它的文档的任何具体内容,但就我可以从示例和其他问题中理解,它应该只是打开这样的连接。
conn = boto.sqs.connect_to_region('us-east-1')
queue = conn.get_queue('my_queue')
相反,我从 connect 方法获取 null 对象,除非我在我的环境中提供凭据,或者明确地提供给方法。
我非常确定我的角色还可以,因为它适用于其他服务,例如 S3 ,描述 EC2 标签,将指标发送到 CloudWatch < / em>等等,都是透明的。我的 SQS 政策是这样的:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SQSFullAccess",
"Effect": "Allow",
"Action": [
"sqs:*"
],
"Resource": [
"arn:aws:sqs:us-east-1:<account_id>:<queue_name1>",
"arn:aws:sqs:us-east-1:<account_id>:<queue_name2>"
]
}
]
}
为了摆脱对我的政策的任何怀疑,我甚至暂时将 FullAdmin 政策与我的角色相关联,但没有成功。
我还确认它也不能使用 AWS CLI (据我所知,它也使用 Boto )。因此,我能得出的唯一结论是, SQS 客户端存在 Boto 问题。
有人会有不同的经历吗?我知道切换到 Boto 3 可能会解决它,但我现在不考虑这样做,如果它确实是一个bug,我认为应该在git上报告,无论如何。
感谢。
答案 0 :(得分:0)
回答自己。
Boto的2.38 SQS客户端 与IAM角色合作。我的申请中有一个错误。
对于AWS CLI,凭证文件(〜/ .aws / credentials )存在于我的本地帐户中,并被用来代替实例的角色,因为角色是最后一个由CLI查找。