2016-07-29 11 views
2

Ich versuche, eine Charge von Nachrichten von der Befehlszeile mit aws CLI zu senden. Der Befehl sieht wie folgt aus:AWS-sqs senden Nachrichtenstapel von 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]\"}]" 

Das Problem ist, es gibt einen Fehlercode 255:

'list' object has no attribute 'keys' 

Jede Idee, was ich falsch mache?

+0

Ich hatte noch nie Glück mit dem CLI-Eingang-Json. Speichern Sie Ihre Nachrichten als JSON-Datei und verweisen Sie auf diese Datei als '--Entries file: //path/to/file.json –

+0

Ja, darüber nachgedacht. Das Problem ist, ich habe 10k Nachrichten zu senden, und das Erstellen einer Datei für jeden 10 Batch ist eine hässliche Lösung :( – Petru

Antwort

2

Sie sind sehr nah!
Die CLI-Hilfe ist irgendwie vage, aber das Argument für den Parameter --entries kann entweder direkt mit JSON oder mit Kurzschrift-Syntax angegeben werden (ohne cli-input-json). So sollte Ihr Befehl wie folgt aussehen:

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]\"}]" 

Der --cli-input-json Parameter ein optionaler Parameter auf allen cli-Befehle zur Verfügung, die Sie alle Argumente liefern erlaubt (nicht einzelne) für einen Befehl als json. Es ist in diesem Fall nicht erforderlich