TiDB Cloudとn8nを統合する
n8nは拡張可能なワークフロー自動化ツールです。フェアコード配布モデルを採用しているため、n8nは常にソースコードが公開されており、セルフホストが可能で、独自の関数、ロジック、アプリケーションを追加できます。
このドキュメントでは、自動ワークフローの構築方法を紹介します。具体的には、 TiDB Cloud Starterインスタンスを作成し、Hacker NewsのRSSフィードを収集してTiDBに保存し、概要メールを送信します。
注記:
このドキュメントの手順は、 TiDB Cloud Starterインスタンスに加えて、 TiDB Cloud Essentialインスタンスでも適用できます。
前提条件: TiDB Cloud APIキーを取得する
- TiDB Cloudコンソールでは、左上隅のコンボボックスを使用して、対象の組織に切り替えてください。
- 左側のナビゲーションペインで、 [組織設定] > [APIキー]をクリックします。
- APIキーのページで、 「APIキーを作成」をクリックします。
- APIキーの説明を入力し、 「次へ」をクリックしてください。
- 作成したAPIキーをコピーしてn8nで後で使用するようにし、 「完了」をクリックしてください。
詳細については、 TiDB Cloud APIの概要参照してください。
ステップ1:n8nをインストールする
セルフホスティング型のn8nをインストールする方法は2つあります。ご自身に合った方法をお選びください。
作業スペースにNode.jsをインストールしてください。
npxから n8n をダウンロードして起動します。npx n8n
ワークスペースにドッカーをインストールします。
dockerから n8n をダウンロードして起動します。docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n
n8nを起動したら、 localhost:5678にアクセスしてn8nを試してみてください。
ステップ2:n8nにTiDB Cloudノードをインストールする
TiDB Cloudノードは、npmリポジトリではn8n-nodes-tidb-cloudという名前です。n8nでTiDB Cloudを制御するには、このノードを手動でインストールする必要があります。
- localhost:5678ページで、n8nをセルフホスティングするためのオーナーアカウントを作成します。
- 設定>コミュニティノードに移動してください。
- 「コミュニティノードをインストール」をクリックしてください。
- npmパッケージ名フィールドに
n8n-nodes-tidb-cloudと入力します。 - 「インストール」をクリックしてください。
その後、ワークフローの検索バーでTiDB Cloudノードを検索し、ワークスペースにドラッグすることでTiDB Cloudノードを使用できます。
ステップ3:ワークフローを構築する
このステップでは、 「実行」ボタンをクリックしたときに、TiDBにデータを挿入する新しいワークフローを作成します。
この使用例のワークフローでは、以下のノードを使用します。
最終的なワークフローは次の画像のようになります。
(オプション) TiDB Cloud Starterインスタンスを作成する
TiDB Cloud Starterインスタンスをお持ちでない場合は、このノードを使用してインスタンスを作成できます。そうでない場合は、この操作をスキップしても構いません。
- ワークフローパネルに移動し、 「ワークフローの追加」をクリックします。
- 新しいワークフローワークスペースで、右上隅の「+」をクリックし、 「すべてのフィールド」を選択します。
TiDB Cloudを検索して、ワークスペースにドラッグします。- TiDB Cloudノードの認証情報(TiDB Cloud APIキー)を入力してください。
- プロジェクト一覧から、プロジェクトを選択してください。
- 操作リストで、
Create Serverless Clusterを選択します。 - 「クラスタ名」ボックスに、 TiDB Cloud Starterインスタンスの名前を入力します。
- リージョンリストから地域を選択してください。
- パスワード欄に、 TiDB Cloud Starterインスタンスへのログインに使用するパスワードを入力してください。
- ノードを実行するには、 「ノードを実行」をクリックしてください。
注記:
新しいTiDB Cloud Starterインスタンスを作成するには、数秒かかります。
ワークフローを作成する
ワークフローの開始点として手動トリガーを使用する
ワークフローがまだ作成されていない場合は、ワークフローパネルに移動して、 「最初から作成」をクリックしてください。既にワークフローを作成している場合は、この手順をスキップしてください。
右上隅の「+」をクリックして、
schedule triggerを検索します。手動トリガーノードをワークスペースにドラッグし、ノードをダブルクリックします。パラメーターダイアログが表示されます。
ルールを以下のように設定してください。
- トリガー間隔:
Days - トリガー間の日数:
1 - 時刻:
8am - トリガー時刻:
0
- トリガー間隔:
このトリガーは、毎朝午前8時にワークフローを実行します。
データ挿入に使用するテーブルを作成します。
手動トリガーノードの右側にある「+」をクリックします。
TiDB Cloudを検索してワークスペースに追加します。パラメーターダイアログで、 TiDB Cloudノードの認証情報を入力します。認証情報は、 TiDB Cloud APIキーです。
プロジェクト一覧から、プロジェクトを選択してください。
操作リストで、
Execute SQLを選択します。TiDB Cloud Starterインスタンスを選択してください。リストに新しいインスタンスが表示されない場合は、インスタンスの作成が完了するまで数分お待ちください。
ユーザー一覧からユーザーを選択してください。TiDB Cloudは常にデフォルトユーザーを作成するため、手動で作成する必要はありません。
データベースボックスに
testと入力します。データベースのパスワードを入力してください。
SQLボックスに、次のSQLを入力してください。
CREATE TABLE IF NOT EXISTS hacker_news_briefing (creator VARCHAR (200), title TEXT, link VARCHAR(200), pubdate VARCHAR(200), comments VARCHAR(200), content TEXT, guid VARCHAR (200), isodate VARCHAR(200));テーブルを作成するには、 「実行ノード」をクリックしてください。
Hacker NewsのRSSフィードを入手する
- TiDB Cloudノードの右側にある「+」をクリックします。
RSS Readを検索してワークスペースに追加します。- URLボックスに
https://hnrss.org/frontpageと入力します。
TiDBにデータを挿入する
- RSS Readノードの右側にある「+」をクリックしてください。
TiDB Cloudを検索してワークスペースに追加します。- 以前のTiDB Cloudノードで入力した認証情報を選択してください。
- プロジェクト一覧から、プロジェクトを選択してください。
- 操作リストで、
Insertを選択します。 - 「クラスタ」 、 「ユーザー」 、 「データベース」 、 「パスワード」の各ボックスに、それぞれ対応する値を入力してください。
- 表ボックスに、
hacker_news_briefing表を入力します。 - 「列」ボックスに
creator, title, link, pubdate, comments, content, guid, isodateと入力します。
メッセージを作成する
RSSフィードの「読む」ノードの右側にある「+」をクリックします。
codeを検索してワークスペースに追加します。Run Once for All Itemsモードを選択してください。JavaScriptボックスに、以下のコードをコピー&ペーストしてください。
let message = ""; // Loop the input items for (item of items) { message += ` <h3>${item.json.title}</h3> <br> ${item.json.content} <br> ` } let response = ` <!DOCTYPE html> <html> <head> <title>Hacker News Briefing</title> </head> <body> ${message} </body> </html> ` // Return our message return [{json: {response}}];
Gmailでメッセージを送信
コードノードの右側にある「+」をクリックします。
gmailを検索してワークスペースに追加します。Gmail ノードの認証情報を入力します。詳細な手順については、 n8nドキュメントドキュメントを参照してください。
リソースリストで、
Messageを選択します。操作リストで、
Sendを選択します。「宛先」欄にメールアドレスを入力してください。
件名欄に
Hacker News Briefingと入力します。「メールの種類」ボックスで、
HTMLを選択します。メッセージボックスで、
Expressionをクリックし、{{ $json["response"] }}と入力します。注記:
メッセージボックスにカーソルを合わせ、式パターンを選択する必要があります。
ステップ4:ワークフローを実行する
ワークフローを作成したら、 「ワークフローの実行」をクリックしてテスト実行できます。
ワークフローが想定どおりに実行されれば、Hacker Newsの速報メールが届きます。これらのニュースコンテンツはTiDB Cloud Starterインスタンスにログとして記録されるため、紛失の心配はありません。
これで、ワークフローパネルからこのワークフローを有効化できます。このワークフローを使用すると、Hacker Newsのトップページ記事を毎日取得できます。
TiDB Cloudノードコア
サポート対象のオペレーション
TiDB Cloudノードは通常のノードとして機能し、次の 5 つの操作のみをサポートします。
- サーバーレスクラスタの作成: TiDB Cloud Starterインスタンスを作成します。
- SQLの実行:TiDBでSQL文を実行します。
- 削除:TiDB内の行を削除します。
- Insert :TiDBに行を挿入します。
- 更新: TiDB の行を更新します。
フィールズ
各種操作を実行するには、それぞれの必須項目を入力する必要があります。以下に、各操作に対応する項目の説明を示します。
- TiDB CloudAPI の認証情報: TiDB CloudAPI キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、サポート対象のオペレーションを参照してください。
- クラスタ: TiDB Cloud Starterインスタンスの名前を入力してください。
- リージョン:リージョン名。TiDB Cloud Starterインスタンスをデプロイするリージョンを選択してください。通常は、アプリケーションのデプロイ先に最も近いリージョンを選択してください。
- パスワード:rootパスワード。新しいTiDB Cloud Starterインスタンスのパスワードを設定してください。
- TiDB CloudAPI の認証情報: TiDB CloudAPI キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、サポート対象のオペレーションを参照してください。
- クラスタ: TiDB Cloud Starterインスタンスの名前。既存のインスタンスを1つ選択してください。
- パスワード: TiDB Cloud Starterインスタンスのパスワード。
- ユーザー: TiDB Cloud Starterインスタンスのユーザー名。
- データベース:データベース名。
- SQL :実行するSQL文。
- TiDB CloudAPI の認証情報: TiDB CloudAPI キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、支援活動を参照してください。
- クラスタ: TiDB Cloud Starterインスタンスの名前。既存のインスタンスを1つ選択してください。
- パスワード: TiDB Cloud Starterインスタンスのパスワード。
- ユーザー: TiDB Cloud Starterインスタンスのユーザー名。
- データベース:データベース名。
- テーブル:テーブル名。
From listモードを使用してテーブル名を選択するか、Nameモードを使用してテーブル名を手動で入力できます。 - 削除キー:データベース内のどの行を削除するかを決定するアイテムのプロパティ名。アイテムとは、あるノードから別のノードに送信されるデータのことです。ノードは、受信データの各アイテムに対してアクションを実行します。n8n のアイテムの詳細については、 n8nドキュメントを参照してください。
- TiDB CloudAPI の認証情報: TiDB CloudAPI キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、支援活動を参照してください。
- クラスタ: TiDB Cloud Starterインスタンスの名前。既存のインスタンスを1つ選択してください。
- パスワード: TiDB Cloud Starterインスタンスのパスワード。
- ユーザー: TiDB Cloud Starterインスタンスのユーザー名。
- データベース:データベース名。
- テーブル:テーブル名。
From listモードを使用してテーブル名を選択するか、Nameモードを使用してテーブル名を手動で入力できます。 - 列:入力項目のプロパティをカンマで区切ったリストで、新しい行の列として使用されます。項目とは、あるノードから別のノードに送信されるデータのことです。ノードは、受信データの各項目に対してアクションを実行します。n8n の項目に関する詳細は、 n8nドキュメントを参照してください。
- TiDB CloudAPI の認証情報: TiDB CloudAPI キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、支援活動を参照してください。
- クラスタ: TiDB Cloud Starterインスタンスの名前。既存のインスタンスを1つ選択してください。
- パスワード: TiDB Cloud Starterインスタンスのパスワード。
- ユーザー: TiDB Cloud Starterインスタンスのユーザー名。
- データベース:データベース名。
- テーブル:テーブル名。
From listモードを使用してテーブル名を選択するか、Nameモードを使用してテーブル名を手動で入力できます。 - 更新キー:データベース内のどの行を更新するかを決定するアイテムのプロパティ名。アイテムとは、あるノードから別のノードに送信されるデータのことです。ノードは、受信データの各アイテムに対してアクションを実行します。n8n のアイテムの詳細については、 n8nドキュメントを参照してください。
- 列:入力項目のプロパティをカンマで区切ったリスト。更新対象の行の列として使用されます。
制限事項
- 通常、 SQL実行操作では1つのSQLステートメントしか実行できません。1つの操作で複数のステートメントを実行する場合は、
tidb_multi_statement_mode手動で有効にする必要があります。 - 削除および更新操作では、キーとして1つのフィールドを指定する必要があります。たとえば、
Delete Keyをidに設定すると、DELETE FROM table WHERE id = ${item.id}を実行するのと同等になります。現在、削除および更新操作では、キーを1つだけ指定できます。 - 挿入および更新操作の場合、列フィールドにカンマ区切りのリストを指定する必要があり、フィールド名は入力項目のプロパティ名と同じでなければなりません。
