[英]Boto3 not assuming IAM role from credentials where aws-cli does without problem
[英]Issue connecting to AWS SQS using IAM Role with Boto 2.38
我无法使用其与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方法获得一个空对象。
我很确定自己的角色还可以,因为它可以透明地用于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可能会解决它,但是我现在不考虑这样做,如果它确实是个错误,我认为应该在git上进行报告。
谢谢。
回答我自己。
宝途的2.38 SQS客户端不与IAM角色的工作。 我的应用程序中有一个错误。
对于AWS CLI,我的本地帐户中存在一个凭证文件( 〜/ .aws / credentials ),并且该凭证文件代替了实例的角色,因为该角色是CLI所要查找的最后一个文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.