首页 文章

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

提问于
浏览
0

我无法使用与 Boto 2.38 库(和Python 3)关联的IAM角色从EC2实例向AWS Simple Queue Service(SQS)进行身份验证 .

我找不到任何关于它的文档的具体内容,但就我可以从示例和其他问题中理解,它应该只是打开这样的连接 .

conn = boto.sqs.connect_to_region('us-east-1')
queue = conn.get_queue('my_queue')

相反,我从connect方法获取一个null对象,除非我在我的环境中提供凭据,或者显式地提供给方法 .

我非常确定我的角色是正确的,因为它适用于其他服务,如S3,描述EC2标签,向CloudWatch发送指标等,都是透明的 . 我的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

    回答自己 .

    Boto的2.38 SQS客户端 does 与IAM角色合作 . 我的应用程序中有一个错误 .

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

相关问题