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

时间:2019-09-26 13:37:49

标签: python amazon-web-services boto3 message-queue amazon-sqs

我正在尝试使用https://github.com/roribio/alpine-sqs容器来模拟AWS SQS功能。

我能够运行docker容器并使用终端将消息发送到队列。将 AWS访问密钥ID AWS秘密访问密钥配置为使用aws configure

清空字符串

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

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

我能够接收到该消息,并且可以在浏览器的localhost:9235的仪表板上看到它。

但是当我尝试使用boto3中的python发送消息时,它抛出了错误。

  

回溯(最近通话最近):文件   “ /home/infomagnus/PycharmProjects/InfoMagnus/workload/app/workload/services/queue_services.py”,   第13行       “有关当前纽约时报小说畅销书的信息”文件   “ /home/infomagnus/envs/DSDPenv/lib/python3.7/site-packages/botocore/client.py”,   _api_call中的第357行       返回self._make_api_call(operation_name,kwargs)文件“ /home/infomagnus/envs/DSDPenv/lib/python3.7/site-packages/botocore/client.py”,   _make_api_call中的第661行       引发error_class(parsed_response,operation_name)botocore.exceptions.ClientError:发生错误   (InvalidClientTokenId)在调用SendMessage操作时:   请求中包含的安全令牌无效

不确定使用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 个答案:

答案 0 :(得分:2)

您忘了通过endpoint_url

sqs = boto3.client('sqs', aws_access_key_id=None, aws_secret_access_key=None, endpoint_url='http://localhost:9324')