Connecting to Amazon SQS using boto
我正在尝试通过 python boto 库连接到 Amazon SQS。
1 2 3 4 | import boto3 sqs= boto3.resource('sqs') for queue in sqs.queues.all(): print(queue.url) |
我已将我的凭据存储在 ~/.aws/credentials 文件中
1 2 3 4 | [default] aws_access_key_id=XXX aws_secret_access_key=YYY region=us-west-2 |
但是当我执行代码时,我得到一个错误
botocore.exceptions.ClientError: An error occurred (AccessDenied) when
calling the ListQueues operation: Access to the resource
https://us-west-2.queue.amazonaws.com/ is denied.
我尝试直接连接到队列。
LCqueue = sqs.get_queue_by_name(QueueName='myQueue')
然后它告诉我没有这样的队列。即使我可以在 AWS 管理控制台上看到它。有什么想法吗?
我的 IAS 管理控制台也出现错误。我无法列出任何用户。
您确定您的用户已授予
转到 IAM 服务,选择您的用户(您在 CLI 中使用的用户)并检查附加到您的用户的组/权限。
如果没有,您可以在"搜索 IAM"框(左上角)中搜索
选择"将实体附加到 AmazonSQSReadOnlyAccess(或 AmazonSQSFullAccess)"并将预定义策略附加到您的用户
虽然其他答案也有其用处,但我的问题最终只是我需要将
1 2 3 4 5 6 7 | import boto3 from django.conf import settings sqs = boto3.client('sqs', region_name=settings.AWS_DEFAULT_REGION, aws_access_key_id=settings.AWS_ACCESS_KEY_ID, aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY) |
当我从
我知道这是旧的,但如果有人先到 SO:这可能是因为您尝试连接到的区域。
我可以通过 aws Web 控制台访问 us-east-1 中的 SQS,但是尝试从 us-east-1 中的队列中检索消息导致来自 python 客户端的访问被拒绝。
谢天谢地,从 github 讨论中:https://github.com/aws/aws-sdk-php/issues/188#issuecomment-258880267,我尝试将区域更改为我应该拥有权限和我能够从该区域中创建的队列接收消息。
我最终使用了以前版本的 Boto (2)