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