こんにちは。SEタケです。
kintoneのデータ、バックアップしていますか。大事なデータの保守をベンダー任せにしていては、何かあったときに困るかもしれません。
いやいや、こんなに広く使われているkintoneがデータを紛失するなんてことはないはず。。そうですよね。私もそう思います。
でも絶対大丈夫かといわれると。。クラウドサービスに預けていた重要データが消える、そういうケースは時々あるんですよね。。
また、データ喪失のリスクは、サーバーのトラブルだけではありません。人為的なミスのリスクもあります。 例えば、下記のようなケースが考えられますね。
- 特定のレコードを誤って消してしまう
- kintoneアプリのフィールドやアプリ自体を消してしまう
- kintoneアプリの改修やプラグインの設定のミスでデータが消えてしまう
それ以外にも、kintone本体の障害ではなく、プラグイン障害で一時的にkintoneが使えなくなるということも考えられます。実際、過去にそのようなことも発生しています。
そういう場合にも、バックアップデータから情報を見れるようになっていれば、業務を継続することはできます。
システムは正常に動いているときにはそれが当たり前のように感じますが。何かあったときに致命的な状態にならないよう、最低限の準備はしておいたほうが安心ですね。
では、kintoneのバックアップにはどういう方法があるでしょうか。
一番手っ取り早いのが、定期的に手動でCSVに書き出す、というものです。kintoneには、テーブルのデータをCSVに書き出す機能があります。でも面倒くさいですね。毎日すべてのアプリを、開いてCSVに出力して保存して・・何も目立った効果がないのに続けられますか?
ではプラグインはどうでしょうか。バックアップに使えるプラグインはいくつかあります。
- トヨクモのkBuckup:高機能ですが、それなりに価格がします。
- Tisのレコードコピー+(ATTAZoo+):アプリごとにバックアップ先のアプリを用意してコピー設定します。kintoneが使えなくなるとデータが見れなくなります。
バックアップだけのために毎月数千円~1万円以上払い続けるのもなぁ・・
そんな方には、手軽に自動でバックアップを取る方法があります。設定は少しだけ手間がかかりますが、一度設定しておけば自動で毎日バックアップを取ってくれます。
というわけで、その方法を紹介します。
全体の仕組み
今回紹介する、バックアップの仕組みの全体像を説明します。
ざっくりいうと、kintoneのデータを Azure Logic Apps (または Power Automate)で吸い出し、OneDriveに保存する、というものです。
AzureはMicrosoftが提供しているクラウドサービスで、様々な機能が提供されています。ロジック、サーバ、ネットワーク、データベース、データ分析、AIなど本当にたくさんの機能があるのですが、その中に Logic Apps という、ドラッグ&ドロップで処理が作成できる機能があります。
(Power Automateという、Azure Logic Apps をベースにMicrosoftから提供されているサービスもあります。よく似た操作で作成できますので、こちらを利用してもOKです。その場合も、この記事は参考になると思います。)
この Logic Apps で作成した処理は、毎日決まった時間など定期的に実行することができます。
それを使用して、kintoneのAPIにアクセスしてデータを取得し、ファイルにしてOneDriveに保管します。
AzureとOneDriveのアカウントは必要ですので、事前に用意してください。
Azure の無料アカウントを今すぐ作成 | Microsoft Azure
OneDrive クラウド ストレージ プランの比較 | OneDrive の料金プラン (microsoft.com)
手順①:kintoneでAPIトークンを発行
まずは、kintoneのAPIが使えるように、APIトークンを発行します。
アプリの設定画面から「APIトークン」を選んで、
APIトークンを「生成する」してください。トークンのアクセス権は「閲覧」のみでOKです。
生成したら「保存」して、「アプリを更新」します。「アプリを更新」までしないと反映されません。忘れがちなので注意です。
手順②:Azure で ロジックアプリ(=Logic Apps)のリソースを作成
Azure のリソースの作成で「ロジック アプリ」(=Logic Apps) を作成します。
サブスクリプションとリソースグループを選択、タイプは「消費」を選んでください。ロジックアプリ名(後で見てわかる名前)をつけて、最も近い地域を選びます。ログ分析の有効化は「いいえ」でOKです。
※タイプで「Standard」を選んでしまうと、使ってなくても設置しているだけで料金がかかってしまい、1ヶ月で1万円を超えてしまいます。
手順③:Azure の ロジックアプリに処理を作成
ロジックアプリのリソースを作成した後、空のロジックアプリを作成します。
処理のトリガーには、「スケジュール」の「繰り返し」を選択します。
繰り返しの間隔は、とりあえず毎日バックアップを取る想定で、1日としておきます。
次に、kintoneのAPIを使用してアプリのデータを取得します。
「新しいステップの作成」で、「HTTP」を選択します。
HTTPの設定は下記のとおりです。
方法 | GET | |
URI | https://(使用しているkintoneのドメイン)/k/v1/records.json | |
ヘッダー | Content-Type | application/json |
X-Cybozu-API-Token | (手順①で作成したkintoneのAPIトークン) | |
クエリ | app | (kintoneアプリのアプリID)
例:https://s4lqd.cybozu.com/k/5/ ←赤文字部分の番号です。 |
次に、バックアップ先のフォルダ名を作成します。日時のフォルダ名を作成して、その下にバックアップファイルを作成する想定です。
「新しいステップの作成」で、「変数」の「変数を初期化する」を選択します。
変数名は何でもいいのですが「utcNow」としておきます。種類は「文字列」、値は式で「addHours(utcNow(), 9, ‘yyyy-MM-dd-HH-mm-ss’)」とします。(UTCに9時間を足して、日本時間に変更した日時にしています。変数名がutc~になっていますが、UTCではないですね。。)
値に式を入力するのは、値の入力欄を選択したときに右側に表示されるダイアログで、「式」のタブを選んだときに出る「fx」欄になります。
最後に、OneDriveにファイルを保存するステップを作成します。
「新しいステップの作成」で「OneDrive」の「ファイルの作成」を選びます。
OneDriveアカウントのサインインの画面が開きますので、保存したいOneDriveにサインインしてください。
「ファイルの作成」の設定です。フォルダーのパスに「/kintone_backup/」と入力し、その後ろに動的なコンテンツで「utcNow」を追加します。適当なファイル名を指定し、ファイルコンテンツは先ほど作成した「HTTP」の「本文」にします。
これでバックアップ処理の作成は終了です。
今回作成したロジックの全体は、下記のようになっています。
手順④:実行してOneDriveに保存されているか確認
最後に、一度テスト実行をしてみましょう。Logic Apps デザイナー画面の上にある「トリガーの実行」→「実行」から実行できます。
OneDriveにバックアップファイルが作成されていたら、成功です。おめでとうございます。
まとめ
この方法であれば、とりあえずデータの保管はできますね。大事なデータを守るために、いったんこの方法で保管だけしておくのもいいかと思います。
ただ、実は今回の方法は、kintoneから取得したJSON形式のデータをそのまま保存していますので、kintoneアプリの「ファイルから読み込む」でデータを取り込むことはできません。「ファイルから読み込む」ができるようにするには、CSV形式で保存する必要があります。また、添付ファイルのほ存もできていません。
それから、バックアップを削除する処理もありませんので、長期間放置しておくとデータ容量がいっぱいになってしまいます。実際のバックアップは保存する期間を超えたファイルは削除していくようにする必要もあります。
これらについては、また後日記事にしようと思います。
データを復旧しやすく、かつ継続的にバックアップを行うためには、もう少し改良する必要がありそうです。
自分では無理そうだと思われた方や、より使いやすいバックアップ方法をご希望の方は、ココナラに出品があります。こちらも参考にしてください。
大事なデータを定期的にバックアップし、安心して業務を行えるようにしておきましょう。
最後までお読みいただき、ありがとうございました。
コメント