Quantcast
Channel: Google Cloud Platform その1 Advent Calendarの記事 - Qiita
Viewing all articles
Browse latest Browse all 23

Cloud DatastoreのCLIツールを作った

$
0
0

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とかに書いてもらえれば順次対応していきます。


Viewing all articles
Browse latest Browse all 23

Trending Articles