当前位置: 首页 > 知识库问答 >
问题:

如何使用python boto3将消息发送到本地SQS队列?

东方方伟
2023-03-14

我试图使用https://github.com/roribio/alpine-sqs容器

我能够运行docker容器,并使用终端将消息发送到队列。

我用来将消息发送到SQS队列容器的命令如下

aws --endpoint-url http://localhost:9324 sqs send-message --queue-url http://localhost:9324/queue/default --message-body "Hello, queue!"

我能够接收到消息,并且可以在浏览器中的dashboad中看到它,网址为localhost:9235

但是当我试图在python中使用boto3发送消息时,它抛出了一个错误。

回溯(最后一次调用):文件“/home/infomagnus/PycharmProjects/infomagnus/workload/app/workload/services/queue_services.py”,第13行,在“关于当前纽约时报小说畅销书的信息”文件“/home/infomagnus/envs/DSDPenv/lib/python3.7/site packages/botocore/client.py”,第357行,在_api_call return self中_make_api_call(operation_name,kwargs)File“/home/infomagnus/envs/DSDPenv/lib/python3.7/site packages/botocore/client.py”,第661行,位于make_api_call raiser error_class(解析响应,operation_name)botocore中。例外。ClientError:调用SendMessage操作时发生错误(InvalidClientTokenId):请求中包含的安全令牌无效

不确定为什么即使在使用aws configure设置按键后也会出现错误。

我运行的所有东西都在我的本地。

这是我的代码:

import boto3
sqs = boto3.client('sqs', aws_access_key_id=None, aws_secret_access_key=None)
queue_url = 'http://localhost:9324/queue/default'
resp = sqs.send_message(
    QueueUrl=queue_url,
    MessageBody=(
        'Sample message for Queue.'
    )
)
print(resp['MessageId'])

共有1个答案

宋凌龙
2023-03-14

您忘记传递endpoint\u url

sqs = boto3.client('sqs', aws_access_key_id=None, aws_secret_access_key=None, endpoint_url='http://localhost:9324')
 类似资料:
  • 我试图使用他们文档中提到的masstransit配置将SNS主题订阅到SQS队列。消息已发布,但不会出现在SQS队列中。SQS队列名称:“测试”,SNS主题名称:“kbbico手动替换”。

  • 我是Spring JMS的新手。我的应用程序是使用Spring Boot开发的,并部署在JBoss EAP7.2.0中。我有一个远程队列,它是一个活动的MQ Artemis队列,也嵌入在JBoss EAP7.2.0中。有人能建议我如何使用Spring Boot的JmsTemplate向远程JMS队列发送消息吗?基本上,我不知道应该如何定义远程connectionFactory来连接到远程队列。

  • 问题内容: 我试图将字符串消息发送到在weblogic服务器中创建的JMS队列中。我使用Eclipse IDE,当我运行Web应用程序时,出现以下错误,tomcat服务器关闭。错误是 请帮助我。谢谢和最诚挚的问候 问题答案: 基于对该问题的一些快速研究,它似乎是由于在应用服务器和客户端之间使用不同的JDK级别引起的。我看到的大多数示例都表明,在Java 5上运行Weblogic时在客户端上使用Ja

  • 我有一个连接到lambda的队列(fifo)。我想在lambda中向标准队列发送一条消息。但没有发送/接收任何消息。然而,如果我尝试从非SQS连接的lambda(通过AppSync)发送它,它会工作。 我查过: lambda有权发送SQS消息(您可以在那里看到) 由于我已成功地从另一个lambda(非SQS)向标准队列发送消息,因此正确配置了标准队列 SQS URL是否正确 控制台中不会显示任何错

  • 我正在使用AWS sdk开发基于SQS的队列pub-sub。 在非常基本的原型中,我将消息并发地推送到我已经创建的队列中。但是,如何才能确定我的消息正在被推送到队列中呢?

  • 我设置了一个EJB项目,使用JMS将持久性实体对象发送到MDB。我使用JBoss EAP 7,使用Apache ActiveMQ作为消息传递提供程序。我像这样设置ConnectionFactory和队列: 这是我的消息生成器,它接收“Account”实体对象作为参数并将其发送到队列: EntityEnqueueBean。Java语言 MDB从队列接收消息并对其进行处理: java账户 不确定我做错