AWS sqs отправляет пакет сообщений из cli

Я пытаюсь отправить пакет сообщений из командной строки с помощью aws cli. Команда выглядит так:

aws sqs send-message-batch \
    --queue-url https://sqs.us-west-2.amazonaws.com/... \
    --region=us-west-2 \
    --cli-input-json "[{\"Id\":\"1\",\"MessageBody\":\"[344ED079FC85292446B193170E02F6C51882A761]\"},{\"Id\":\"2\",\"MessageBody\":\"[B584291B654587C7C957E10DF8B50FB31B2F589E]\"}]"

Проблема в том, что он возвращает код ошибки 255:

'list' object has no attribute 'keys'

Любая идея, что я делаю неправильно?


person Petru    schedule 29.07.2016    source источник
comment
Мне никогда не везло с использованием cli-input-json. сохраните свои сообщения как файл Json и укажите ссылку на этот файл как `--entries file://path/to/file.json   -  person Frederic Henri    schedule 29.07.2016
comment
Да, думал об этом. Проблема в том, что мне нужно отправить 10 тысяч сообщений, а создание файла для каждой партии из 10 — уродливое решение :(   -  person Petru    schedule 01.08.2016


Ответы (1)


Вы очень близки!
Справка по cli довольно расплывчата по этому поводу, но аргумент для параметра --entries может быть предоставлен напрямую либо в формате JSON, либо в сокращенном синтаксисе (без cli-input-json). Итак, ваша команда должна выглядеть так:

aws sqs send-message-batch \
    --queue-url https://sqs.us-west-2.amazonaws.com/... \
    --region=us-west-2 \
    --entries "[{\"Id\":\"1\",\"MessageBody\":\"[344ED079FC85292446B193170E02F6C51882A761]\"},{\"Id\":\"2\",\"MessageBody\":\"[B584291B654587C7C957E10DF8B50FB31B2F589E]\"}]"

Параметр --cli-input-json — это необязательный параметр, доступный во всех командах cli, который позволяет вам предоставлять все аргументы (не отдельные) для команды в виде json. Необязательно в данном случае

person Jonathan Seed    schedule 03.08.2016