2016-07-29 6 views
2

Я пытаюсь отправить пакет сообщений из командной строки с помощью aws cli. Команда выглядит следующим образом:AWS sqs отправить сообщение пакет из 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' 

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

+0

Мне никогда не повезло с использованием cli-input-json. сохраните ваши сообщения в виде файла Json и ссылайтесь на этот файл как «файл -entries: //path/to/file.json –

+0

Да, подумал об этом. Проблема в том, что у меня есть 10 тыс. Сообщений для отправки, а создание файла для каждых 10 партий - уродливое решение :( – Petru

ответ

2

Вы очень близко!
Справка 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 Параметр необязательный параметр доступен для всех команд консоли, что позволяет обеспечить все аргументы (не индивидуальные) для команды в формате JSON. В этом случае нет необходимости