意外と忘れてハマりがちなので。

コマンドプロンプトで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

外部ファイルに書いてやれば気にしなくてよいのでこちらの方がスマートですね。

元記事はこちら

コマンドプロンプトでAWS CLIを使うときのJSONの取り扱い