GoogleCloudPlatform シェアフル Advent Calendar 2018 13 日目の記事です。
みんな大好きCloudDatastore。もちろん私も大好きなのですが、コマンドラインで操作(データの抽出とか削除とか)が出来ないのが個人的な不満点でした。
そこで、CloudDatastoreをCLIで操作するGo製のツール datastore-tools を作成しました。何番煎じかわからないくらい他にもありそうなツールですが、せっかく作ったし、おまけに年末でもありますからツール供養がてらご紹介させて頂きたいと思います。
何が出来るの?
- エンティティを出力(Json形式、テーブル形式)
- エンティティを更新
- エンティティをtruncate
インストール方法
Goが入っている環境であれば、
$ go get github.com/keitaro1020/datastore-tools
でインストール出来ます。また、Windows/Mac/Linuxのバイナリも用意しています。
使い方
事前準備
CloudDatastoreにアクセスするために gcloud auth
をするか、datastore.user
のロールを持ったサービスアカウントを作成しキーファイルをダウンロードしておく必要があります。
エンティティを出力
datastore-tools select
でエンティティを検索し、出力することが出来ます
$ datastore-tools select -p [project-name] -k [kind-name]
[
{
"__key__": {
"Kind": "Fruits",
"ID": 5634612826996736,
"Name": "",
"Namespace": ""
},
"description": "オレンジ",
"name": "orange"
},
{
"__key__": {
"Kind": "Fruits",
"ID": 5643096528257024,
"Name": "",
"Namespace": ""
},
"description": "りんご",
"name": "apple"
}
]
json形式で出力されるので、jqコマンドと組み合わせれば加工も容易です。
-tオプションをつけると、テーブル形式で出力することも出来ます
~ $ datastore-tools select -p [project-name] -k [kind-name] -t
+------------------+--------+-------------+
| KEY | NAME | DESCRIPTION |
+------------------+--------+-------------+
| 5634612826996736 | orange | オレンジ |
+------------------+--------+-------------+
| 5643096528257024 | apple | りんご |
+------------------+--------+-------------+
エンティティを更新
datastore-tools update
でエンティティを更新することが出来ます。
-sオプションに Property=value
の形式で値を指定します。
-wオプションで条件を指定し、指定した条件の値のみを変更することも出来ます。
~ $ datastore-tools update -p [project-name] -k [kind-name] -w name=apple -s description="りんご とても美味しい"
~ $ datastore-tools select -p [project-name] -k [kind-name]
[
{
"__key__": {
"Kind": "Fruits",
"ID": 5634612826996736,
"Name": "",
"Namespace": ""
},
"description": "オレンジ",
"name": "orange"
},
{
"__key__": {
"Kind": "Fruits",
"ID": 5643096528257024,
"Name": "",
"Namespace": ""
},
"description": "りんご とても美味しい",
"name": "apple"
}
]
エンティティをtruncate
datastore-tools truncate
でエンティティを全件削除することが出来ます。
~ $ datastore-tools truncate -p [project-name] -k [kind-name]
truncate finish, count = 2
~ $ datastore-tools select -p [project-name] -k [kind-name]
[
]
まとめ
以上が現在の datastore-tools
で出来ることになります。まだまだ至らない点もたくさんあるかと思いますが、多くの方に使っていただけたら嬉しいです。
もし不具合や改善提案等ありましたら、Githubのissueとかに書いてもらえれば順次対応していきます。