我正在尝试使用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'])
答案 0 :(得分:2)
您忘了通过endpoint_url
。
sqs = boto3.client('sqs', aws_access_key_id=None, aws_secret_access_key=None, endpoint_url='http://localhost:9324')