TiDB Cloudとn8nを統合する
n8nは拡張可能なワークフロー自動化ツールです。FairCode配布モデルを採用しているため、n8nは常にソースコードが公開されており、セルフホストが可能で、独自の関数、ロジック、アプリケーションを追加できます。
このドキュメントでは、自動ワークフローの構築方法を紹介します。具体的には、 TiDB Cloud Starterインスタンスを作成し、Hacker NewsのRSSフィードを収集してTiDBに保存し、概要メールを送信します。
前提条件: TiDB Cloud APIキーを取得する
- TiDB Cloudコンソールでは、左上隅のコンボボックスを使用して、対象の組織に切り替えてください。
- 左側のナビゲーションペインで、 Organization Settings > API Keysをクリックします。
- API Keysページで、 Create API Keyをクリックします。
- APIキーの説明を入力し、 Nextをクリックしてください。
- 作成したAPIキーをコピーしてn8nで後で使用するようにし、 Doneをクリックしてください。
詳細については、 TiDB Cloud APIの概要を参照してください。
ステップ1:n8nをインストールする
セルフホスティング型のn8nをインストールする方法は2つあります。ご自身に合った方法をお選びください。
作業スペースにNode.jsをインストールしてください。
npxから n8n をダウンロードして起動します。npx n8n
ワークスペースにDockerをインストールします。
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をセルフホスティングするためのオーナーアカウントを作成します。
- Settings>Community nodesに移動してください。
- Install a community nodeをクリックしてください。
- npm Package Nameフィールドに
n8n-nodes-tidb-cloudと入力します。 - Installをクリックしてください。
その後、TiDB Cloudの検索バーでTiDB Cloudノードを検索し、ワークスペースにドラッグすることでTiDB Cloudノードを使用できます。
ステップ3:ワークフローを構築する
このステップでは、 Executeボタンをクリックしたときに、TiDBにデータを挿入する新しいワークフローを作成します。
この使用例のワークフローでは、以下のノードを使用します。
最終的なワークフローは次の画像のようになります。
(オプション) TiDB Cloud Starterインスタンスを作成する
TiDB Cloud Starterインスタンスをお持ちでない場合は、このノードを使用してインスタンスを作成できます。そうでない場合は、この操作をスキップしても構いません。
- Workflowsパネルに移動し、 Add workflowをクリックします。
- 新しいワークフローワークスペースで、右上隅の+をクリックし、 Allフィールドを選択します。
TiDB Cloudを検索して、ワークスペースにドラッグします。- TiDB Cloudノードの認証情報(TiDB Cloud APIキー)を入力してください。
- Project一覧から、プロジェクトを選択してください。
- 操作リストで、
Create Serverless Clusterを選択します。 - Cluster Nameボックスに、 TiDB Cloud Starterインスタンスの名前を入力します。
- リージョンリストから地域を選択してください。
- Password欄に、 TiDB Cloud Starterインスタンスへのログインに使用するパスワードを入力してください。
- ノードを実行するには、 Execute Nodeをクリックしてください。
ワークフローを作成する
ワークフローの開始点として手動トリガーを使用する
ワークフローがまだ作成されていない場合は、Workflowsパネルに移動して、 Start from scratchをクリックしてください。既にワークフローを作成している場合は、この手順をスキップしてください。
右上隅の+をクリックして、
schedule triggerを検索します。手動トリガーノードをワークスペースにドラッグし、ノードをダブルクリックします。パラメーターダイアログが表示されます。
ルールを以下のように設定してください。
- Trigger Interval:
Days - Days Between Triggers:
1 - Trigger at Hour:
8am - Trigger at Minute:
0
- Trigger Interval:
このトリガーは、毎朝午前8時にワークフローを実行します。
データ挿入に使用するテーブルを作成します。
手動トリガーノードの右側にある+をクリックします。
TiDB Cloudを検索してワークスペースに追加します。パラメーターダイアログで、 TiDB Cloudノードの認証情報を入力します。認証情報は、 TiDB Cloud APIキーです。
Project一覧から、プロジェクトを選択してください。
操作リストで、
Execute SQLを選択します。TiDB Cloud Starterインスタンスを選択してください。リストに新しいインスタンスが表示されない場合は、インスタンスの作成が完了するまで数分お待ちください。
User一覧からユーザーを選択してください。TiDB Cloudは常にデフォルトユーザーを作成するため、手動で作成する必要はありません。
Databaseボックスに
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));テーブルを作成するには、 Execute nodeをクリックしてください。
Hacker NewsのRSSフィードを入手する
- TiDB Cloudノードの右側にある+をクリックします。
RSS Readを検索してワークスペースに追加します。- URLボックスに
https://hnrss.org/frontpageと入力します。
TiDBにデータを挿入する
- RSS Readノードの右側にある+をクリックしてください。
TiDB Cloudを検索してワークスペースに追加します。- 以前のTiDB Cloudノードで入力した認証情報を選択してください。
- Project一覧から、プロジェクトを選択してください。
- 操作リストで、
Insertを選択します。 - Cluster 、 User 、 Database 、 Passwordの各ボックスに、それぞれ対応する値を入力してください。
- Tableボックスに、
hacker_news_briefing表を入力します。 - Columnsボックスに
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ドキュメントドキュメントを参照してください。
Resourceリストで、
Messageを選択します。操作リストで、
Sendを選択します。To欄にメールアドレスを入力してください。
件名欄に
Hacker News Briefingと入力します。Email Typeボックスで、
HTMLを選択します。Messageボックスで、
Expressionをクリックし、{{ $json["response"] }}と入力します。
ステップ4:ワークフローを実行する
ワークフローを作成したら、 Execute Workflowをクリックしてテスト実行できます。
ワークフローが想定どおりに実行されれば、Hacker Newsの速報メールが届きます。これらのニュースコンテンツはTiDB Cloud Starterインスタンスにログとして記録されるため、紛失の心配はありません。
これで、Workflowsパネルからこのワークフローを有効化できます。このワークフローを使用すると、Hacker Newsのトップページ記事を毎日取得できます。
TiDB Cloudノードコア
サポート対象のオペレーション
TiDB Cloudノードは通常のノードとして機能し、次の5つの操作のみをサポートします。
- Create Serverless Cluster: TiDB Cloud Starterインスタンスを作成します。
- Execute SQL:TiDBでSQL文を実行します。
- Delete:TiDB内の行を削除します。
- Insert :TiDBに行を挿入します。
- Update: TiDB の行を更新します。
フィールズ
各種操作を実行するには、それぞれの必須項目を入力する必要があります。以下に、各操作に対応する項目の説明を示します。
- TiDB Cloud API の認証情報: TiDB Cloud API キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- Project: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、サポート対象のオペレーションを参照してください。
- Cluster: TiDB Cloud Starterインスタンスの名前を入力してください。
- リージョン:リージョン名。TiDB Cloud Starterインスタンスをデプロイするリージョンを選択してください。通常は、アプリケーションのデプロイ先に最も近いリージョンを選択してください。
- Password:rootパスワード。新しいTiDB Cloud Starterインスタンスのパスワードを設定してください。
- TiDB Cloud API の認証情報: TiDB Cloud API キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- Project: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、サポート対象のオペレーションを参照してください。
- Cluster: TiDB Cloud Starterインスタンスの名前。既存のインスタンスを1つ選択してください。
- Password: TiDB Cloud Starterインスタンスのパスワード。
- User: TiDB Cloud Starterインスタンスのユーザー名。
- Database:データベース名。
- SQL :実行するSQL文。
- TiDB Cloud API の認証情報: TiDB Cloud API キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- Project: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、支援活動を参照してください。
- Cluster: TiDB Cloud Starterインスタンスの名前。既存のインスタンスを1つ選択してください。
- Password: TiDB Cloud Starterインスタンスのパスワード。
- User: TiDB Cloud Starterインスタンスのユーザー名。
- Database:データベース名。
- Table:テーブル名。
From listモードを使用してテーブル名を選択するか、Nameモードを使用してテーブル名を手動で入力できます。 - Delete Key:データベース内のどの行を削除するかを決定するアイテムのプロパティ名。アイテムとは、あるノードから別のノードに送信されるデータのことです。ノードは、受信データの各アイテムに対してアクションを実行します。n8n のアイテムの詳細については、 n8nドキュメントを参照してください。
- TiDB Cloud API の認証情報: TiDB Cloud API キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- Project: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、支援活動を参照してください。
- Cluster: TiDB Cloud Starterインスタンスの名前。既存のインスタンスを1つ選択してください。
- Password: TiDB Cloud Starterインスタンスのパスワード。
- User: TiDB Cloud Starterインスタンスのユーザー名。
- Database:データベース名。
- Table:テーブル名。
From listモードを使用してテーブル名を選択するか、Nameモードを使用してテーブル名を手動で入力できます。 - Columns:入力項目のプロパティをカンマで区切ったリストで、新しい行の列として使用されます。項目とは、あるノードから別のノードに送信されるデータのことです。ノードは、受信データの各項目に対してアクションを実行します。n8n の項目に関する詳細は、 n8nドキュメントを参照してください。
- TiDB Cloud API の認証情報: TiDB Cloud API キーのみをサポートします。 APIキーの作成方法については、 TiDB Cloud APIキーを取得するを参照してください。
- Project: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、支援活動を参照してください。
- Cluster: TiDB Cloud Starterインスタンスの名前。既存のインスタンスを1つ選択してください。
- Password: TiDB Cloud Starterインスタンスのパスワード。
- User: TiDB Cloud Starterインスタンスのユーザー名。
- Database:データベース名。
- Table:テーブル名。
From listモードを使用してテーブル名を選択するか、Nameモードを使用してテーブル名を手動で入力できます。 - Update Key: データベース内のどの行を更新するかを決定するアイテムのプロパティ名。アイテムとは、あるノードから別のノードに送信されるデータのことです。ノードは、受信データの各アイテムに対してアクションを実行します。n8n のアイテムの詳細については、 n8nドキュメントを参照してください。
- Columns:入力項目のプロパティをカンマで区切ったリスト。更新対象の行の列として使用されます。
制限事項
- 通常、 Execute SQL操作では1つのSQLステートメントしか実行できません。1つの操作で複数のステートメントを実行する場合は、
tidb_multi_statement_mode手動で有効にする必要があります。 - DeleteおよびUpdate操作では、キーとして1つのフィールドを指定する必要があります。たとえば、
Delete Keyをidに設定すると、DELETE FROM table WHERE id = ${item.id}を実行するのと同等になります。現在、DeleteおよびUpdate操作では、キーを1つだけ指定できます。 - InsertおよびUpdate操作の場合、Columnsフィールドにカンマ区切りのリストを指定する必要があり、フィールド名は入力項目のプロパティ名と同じでなければなりません。
