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

Issue connecting to AWS SQS using IAM Role with Boto 2.38

我无法使用关联的 IAM 角色从 EC2 实例向 [=​​28=]AWS 简单队列服务 (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 等,所有这些都是透明的。我的 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以及)。所以,我能得出的唯一结论是,这是 Boto 问题 SQS 客户端。

有人对此有不同的体验吗?我知道切换到 Boto 3 可能会解决它,但我现在不考虑这样做,如果它真的是一个错误,我认为应该在 [=65 上报告=], 无论如何.

谢谢。

自己回答。

Boto 的 2.38 SQS 客户端可以使用 IAM 角色。我的应用程序有错误。

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