使用与Boto 2.38的IAM角色连接到AWS SQS的问题

时间:2016-01-02 13:51:18

标签: python-3.x amazon-web-services boto amazon-sqs

我无法使用与 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上报告,无论如何。

感谢。

1 个答案:

答案 0 :(得分:0)

回答自己。

Boto的2.38 SQS客户端 与IAM角色合作。我的申请中有一个错误。

对于AWS CLI,凭证文件(〜/ .aws / credentials )存在于我的本地帐户中,并被用来代替实例的角色,因为角色是最后一个由CLI查找。