意外と忘れてハマりがちなので。
コマンドプロンプトでAWS CLIを使うときにJSONをそのままコマンドラインに記述すると上手くいきません。
$aws dynamodb put-item --table-name Animals --item '{"id":{"S":"a"},"name":{"S":"dog"}}'
Linuxシェルなら上記の記述で大丈夫ですが。
>aws dynamodb put-item --table-name Animals --item '{"id":{"S":"a"},"name":{"S":"dog"}}'
Error parsing parameter '--item': Expected: '=', received: ''' for input:
'{id:{S:a},name:{S:dog}}'
コマンドプロンプトだと引用符の扱いが異なるため、エラーになってしまいます。
>aws dynamodb put-item --table-name Animals --item "{\"id\":{\"S\":\"a\"},\"name\":{\"S\":\"dog\"}}"
このように一番外側を二重引用符で囲って中のものはエスケープしてやると上手くいきます。
>type put.json
{"id":{"S":"a"},"name":{"S":"dog"}}
>aws dynamodb put-item --table-name Animals --item file://put.json
外部ファイルに書いてやれば気にしなくてよいのでこちらの方がスマートですね。