🔖
DynamoDB JSON と通常 JSON の相互変換用 CLI ツールを作った
作ったもの
DynamoDB JSON と通常 JSON の相互変換用 CLI ツールを作成しました。既に duartealexf/ddbjson という機能としても十分な素晴らしいツールがあるのですが、こちらは JavaScript 製で利用 (インストール) のために Node.js を必要としており、個人的にはシングルバイナリの方が好みであったため Go で自作するに至りました。
使用方法
通常 JSON から DynamoDB JSON への変換
ddbjson marshall <from>
JSON ファイル
// user.json
{"id":23,"name":"John Doe"}
ddbjson marshall user.json
# output: {"id":{"N":"23"},"name":{"S":"John Doe"}}
JSON 文字列
ddbjson marshall '{"id":23,"name":"John Doe"}'
# output: {"id":{"N":"23"},"name":{"S":"John Doe"}}
標準入力
echo '{"id":23,"name":"John Doe"}' | ddbjson marshall -
# output: {"id":{"N":"23"},"name":{"S":"John Doe"}}
DynamoDB JSON から通常 JSON への変換
ddbjson unmarshall <from>
JSON ファイル
// ddb_user.json
{"id":{"N":"23"},"name":{"S":"John Doe"}}
ddbjson unmarshall ddb_user.json
# output: {"id":23,"name":"John Doe"}
JSON 文字列
ddbjson unmarshall '{"id":{"N":"23"},"name":{"S":"John Doe"}}'
# output: {"id":23,"name":"John Doe"}
標準入力
echo '{"id":{"N":"23"},"name":{"S":"John Doe"}}' | ddbjson unmarshall -
# output: {"id":23,"name":"John Doe"}
AWS CLI (aws dynamodb) との組み合わせ
put-item
aws dynamodb put-item --table users --item "$(ddbjson marshall '{"id":23,"name":"John Doe"}')"
get-item
aws dynamodb get-item --table users --key '{"id":{"N":"23"}}' --query 'Item' | go run main.go marshall -
Discussion