TiDB Cloudとn8nを統合する
n8nは拡張可能なワークフロー自動化ツールです。2 フェアコード配布モデルにより、n8nは常にソースコードを公開し、セルフホストが可能になり、カスタム関数、ロジック、アプリを追加できるようになります。
このドキュメントでは、 TiDB Cloud Serverless クラスターを作成し、Hacker News RSS を収集して TiDB に保存し、ブリーフィング メールを送信するという自動ワークフローの構築方法を紹介します。
前提条件: TiDB Cloud APIキーを取得する
- TiDB Cloudダッシュボードにアクセスします。
- クリック
をクリックし、左下隅にある[組織の設定] をクリックします。 - 「API キー」タブをクリックします。
- 「API キーの作成」ボタンをクリックして、新しい API キーを作成します。
- 作成した API キーを n8n で後で使用するために保存します。
詳細についてはTiDB CloudAPI の概要参照してください。
ステップ1:n8nをインストールする
セルフホスティングn8nをインストールするには2つの方法があります。ご都合の良い方をお選びください。
- npm
- Docker
ワークスペースにノード.jsインストールします。
npx
で n8n をダウンロードして起動します。npx n8n
ワークスペースにドッカーインストールします。
docker
で n8n をダウンロードして起動します。docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n
n8nを起動したら、 ローカルホスト:5678アクセスしてn8nを試すことができます。
ステップ2: n8nにTiDB Cloudノードをインストールする
TiDB Cloudノードはnpmリポジトリでn8n-nodes-tidb-cloud
名前です。n8nでTiDB Cloudを制御するには、このノードを手動でインストールする必要があります。
- ローカルホスト:5678ページで、セルフホスティング n8n の所有者アカウントを作成します。
- [設定] > [コミュニティ ノード]に移動します。
- 「コミュニティ ノードのインストール」をクリックします。
- npm パッケージ名フィールドに
n8n-nodes-tidb-cloud
入力します。 - [インストール]をクリックします。
次に、ワークフロー> 検索バーでTiDB Cloudノードを検索し、ワークスペースにドラッグしてTiDB Cloudノードを使用できます。
ステップ3: ワークフローを構築する
このステップでは、 「実行」ボタンをクリックしたときに TiDB にデータを挿入する新しいワークフローを作成します。
この使用例のワークフローでは、次のノードが使用されます。
最終的なワークフローは次の画像のようになります。
(オプション) TiDB Cloud Serverless クラスターを作成する
TiDB Cloud Serverless クラスターをお持ちでない場合は、このノードを使用して作成できます。そうでない場合は、この操作をスキップしてください。
- ワークフローパネルに移動し、ワークフローの追加をクリックします。
- 新しいワークフロー ワークスペースで、右上隅の+をクリックし、 [すべてのフィールド] を選択します。
TiDB Cloud
検索し、ワークスペースにドラッグします。- TiDB TiDB Cloud TiDB Cloud API キー) を入力します。
- プロジェクトリストでプロジェクトを選択します。
- 操作リストで
Create Serverless Cluster
選択します。 - [クラスタ名]ボックスにクラスター名を入力します。
- 「リージョン」リストで地域を選択します。
- [パスワード]ボックスに、TiDB クラスターにログインするために使用するパスワードを入力します。
- ノードを実行するには、 「ノードの実行」をクリックします。
注記:
新しいTiDB Cloud Serverless クラスターを作成するには数秒かかります。
ワークフローを作成する
ワークフローのスターターとして手動トリガーを使用する
ワークフローがまだない場合は、 「ワークフロー」パネルに移動し、 「最初から始める」をクリックします。そうでない場合は、この手順をスキップしてください。
右上の+をクリックして
schedule trigger
検索します。手動トリガーノードをワークスペースにドラッグし、ダブルクリックします。パラメータダイアログが表示されます。
ルールを次のように設定します。
- トリガー間隔:
Days
- トリガー間の日数:
1
- トリガー時刻:
8am
- トリガー時間:
0
- トリガー間隔:
このトリガーは、毎朝午前 8 時にワークフローを実行します。
データを挿入するためのテーブルを作成する
手動トリガー ノードの右側にある+をクリックします。
TiDB Cloud
検索してワークスペースに追加します。パラメータダイアログで、 TiDB Cloudノードの認証情報を入力します。認証情報はTiDB Cloud APIキーです。
プロジェクトリストでプロジェクトを選択します。
操作リストで
Execute SQL
選択します。クラスターを選択します。リストに新しいクラスターが表示されない場合は、クラスターの作成が完了するまで数分お待ちください。
「ユーザー」リストでユーザーを選択します。TiDB 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));実行ノードをクリックしてテーブルを作成します。
ハッカーニュースRSSを入手
- TiDB Cloudノードの右側にある+ をクリックします。
RSS Read
検索してワークスペースに追加します。- URLボックスに
https://hnrss.org/frontpage
入力します。
TiDBにデータを挿入する
- RSS 読み取りノードの右側にある+ をクリックします。
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 Serverlessクラスターに記録されるため、失われる心配はありません。
ワークフローパネルでこのワークフローを有効化できるようになりました。このワークフローを使えば、Hacker Newsのトップページ記事を毎日取得できるようになります。
TiDB Cloudノードコア
サポートされている操作
TiDB Cloudノードは通常ノードとして機能し、次の 5 つの操作のみをサポートします。
- サーバーレスクラスタの作成: TiDB Cloud Serverless クラスターを作成します。
- SQL の実行: TiDB で SQL ステートメントを実行します。
- 削除: TiDB 内の行を削除します。
- 挿入: TiDB に行を挿入します。
- 更新: TiDB 内の行を更新します。
フィールド
異なる操作を使用するには、それぞれの必須フィールドに入力する必要があります。以下に、対応する操作の各フィールドの説明を示します。
- Create Serverless Cluster
- Execute SQL
- Delete
- Insert
- Update
- TiDB Cloud APIの認証情報: TiDB Cloud APIキーのみをサポートします。APIキーの作成方法については、 TiDB CloudAPIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、 サポートされている操作を参照してください。
- クラスタ: TiDB Cloudクラスター名。新しいクラスターの名前を入力してください。
- リージョン: リージョン名。クラスターをデプロイするリージョンを選択します。通常は、アプリケーションのデプロイメントに最も近いリージョンを選択します。
- パスワード: ルートパスワード。新しいクラスターのパスワードを設定してください。
- TiDB Cloud APIの認証情報: TiDB Cloud APIキーのみをサポートします。APIキーの作成方法については、 TiDB CloudAPIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、 サポートされている操作を参照してください。
- クラスタ: TiDB Cloudクラスター名。既存のクラスターを 1 つ選択してください。
- パスワード: TiDB Cloudクラスターのパスワード。
- ユーザー: TiDB Cloudクラスターのユーザー名。
- データベース: データベース名。
- SQL : 実行される SQL ステートメント。
- TiDB Cloud APIの認証情報: TiDB Cloud APIキーのみをサポートします。APIキーの作成方法については、 TiDB CloudAPIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、 サポートオペレーションを参照してください。
- クラスタ: TiDB Cloudクラスター名。既存のクラスターを 1 つ選択してください。
- パスワード: TiDB Cloudクラスターのパスワード。
- ユーザー: TiDB Cloudクラスターのユーザー名。
- データベース: データベース名。
- テーブル: テーブル名。2
From list
でテーブル名を選択するか、Name
モードでテーブル名を手動で入力できます。 - 削除キー: データベース内のどの行を削除するかを決定するアイテムのプロパティ名。アイテムとは、あるノードから別のノードに送信されるデータです。ノードは、受信データの各アイテムに対してアクションを実行します。n8nにおけるアイテムの詳細については、 n8n ドキュメント参照してください。
- TiDB Cloud APIの認証情報: TiDB Cloud APIキーのみをサポートします。APIキーの作成方法については、 TiDB CloudAPIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、 サポートオペレーションを参照してください。
- クラスタ: TiDB Cloudクラスター名。既存のクラスターを 1 つ選択してください。
- パスワード: TiDB Cloudクラスターのパスワード。
- ユーザー: TiDB Cloudクラスターのユーザー名。
- データベース: データベース名。
- テーブル: テーブル名。2
From list
でテーブル名を選択するか、Name
モードでテーブル名を手動で入力できます。 - 列: 入力アイテムのプロパティをカンマ区切りでリストしたもので、新しい行の列として使用されます。アイテムとは、あるノードから別のノードに送信されるデータです。ノードは、入力データの各アイテムに対してアクションを実行します。n8nにおけるアイテムの詳細については、 n8n ドキュメント参照してください。
- TiDB Cloud APIの認証情報: TiDB Cloud APIキーのみをサポートします。APIキーの作成方法については、 TiDB CloudAPIキーを取得するを参照してください。
- プロジェクト: TiDB Cloudプロジェクト名。
- 操作: このノードの操作。サポートされているすべての操作については、 サポートオペレーションを参照してください。
- クラスタ: TiDB Cloudクラスター名。既存のクラスターを 1 つ選択してください。
- パスワード: TiDB Cloudクラスターのパスワード。
- ユーザー: TiDB Cloudクラスターのユーザー名。
- データベース: データベース名。
- テーブル: テーブル名。2
From list
でテーブル名を選択するか、Name
モードでテーブル名を手動で入力できます。 - 更新キー: データベース内のどの行を更新するかを決定するアイテムのプロパティ名。アイテムとは、あるノードから別のノードに送信されるデータです。ノードは、受信データの各アイテムに対してアクションを実行します。n8nにおけるアイテムの詳細については、 n8n ドキュメント参照してください。
- 列: 更新する行の列として使用される、入力項目のプロパティのコンマ区切りリスト。
制限事項
- 通常、 SQL実行操作では1つのSQL文のみが許可されます。1回の操作で複数のSQL文を実行する場合は、
tidb_multi_statement_mode
手動で有効にする必要があります。 - 削除および更新操作では、キーとして1つのフィールドを指定する必要があります。例えば、
Delete Key
id
に設定され、これはDELETE FROM table WHERE id = ${item.id}
実行するのと同じです。現在、削除および更新操作では、1つのキーの指定のみがサポートされています。 - 挿入および更新操作の場合、列フィールドにコンマ区切りのリストを指定する必要があり、フィールド名は入力項目のプロパティと同じである必要があります。