Как отправить сообщение в локальную очередь SQS с помощью python boto3? - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь эмулировать функциональность AWS SQS с помощью контейнера https://github.com/roribio/alpine-sqs.

Мне удалось запустить контейнер Docker и отправить сообщения в очередь с помощью терминала.настроил идентификатор ключа доступа AWS и секретный ключ доступа 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, выдает ошибку.

Traceback (последний вызов был последним): файл "/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 возвращает self._make_api_call (имя_операции, kwargs) Файл "/home/infomagnus/envs/DSDPenv/lib/python3.7/site-packages/botocore/client.py", строка 661, в _make_api_call вызывает файл error_class (parsed_response, operation_name).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 Ответ

2 голосов
/ 26 сентября 2019

Вы забыли пройти endpoint_url.

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