2016-07-29 133 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 file://path/to/file.json –

+0

是的,想过这个。问题是我有10k消息发送,并为每10批次创建一个文件是一个丑陋的解决方案:( – Petru

回答

2

你离得很近!
cli帮助对此有点模糊,但可以直接使用JSON或简写语法(不带cli-input-json)提供参数--entries的参数。所以,你的命令应该是:

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所有参数(而不是个人)。在这种情况下这是不必要的