n8n ワークフローを保護:Upstash Redis でレート制限を追加
n8n は、さまざまなサービスを接続し、複雑なプロセスを自動化できる強力なワークフロー自動化ツールです。
しかし、ワークフローがあまりにも多くのリクエストを受け取り始めたらどうなるでしょうか?適切なレート制限がないと、API に負荷がかかりすぎたり、外部サービスの制限に達したり、ワークフローがクラッシュしたりする可能性があります。
この投稿では、Upstash Redis を使用して n8n ワークフローに強力なレート制限を追加する方法を説明します。 .
シンプルかつ効果的で、ニーズに合わせて拡張可能です。
課題:n8n ワークフローの保護
外部リクエスト (Webhook や API エンドポイントなど) を処理する n8n ワークフローを構築する場合は、次の点を考慮する必要があります。
- API の悪用防止 :悪意のあるユーザーがワークフローを圧倒するのを阻止します
- 外部サービスの保護 :サードパーティ API のレート制限を尊重する
- リソース管理 :ワークフローがリソースを過剰に消費しないようにする
- コスト管理 :過剰な API 呼び出しによる予期せぬ料金を回避する
Upstash Redis と n8n のおかげで、わずか数ノードでレート制限システムを実装できます。また、Upstash Redis のすべての利点も活用できます (ドキュメントを参照)。
n8n で Upstash Redis を使ってみる
実装に入る前に、Upstash Redis アカウントを n8n の Redis ノードに接続します。このガイド全体でこの設定を使用します。(n8n と Upstash Redis を参照)
レート制限ワークフローの構築
実装から始めて、ノードを 1 つずつ見てみましょう。
はい、とても簡単です。

ステップ 1:Webhook トリガー
基本的なWebhookから始めます。 ノード。これは、受信リクエストの模擬エントリ ポイントになります。
デフォルト設定でセットアップします。これをテストに使用します:

ステップ 2:ノードにアクセス
次に編集フィールドを作成します。 ノード。このノードは、Redis キー名をUSER_IP:REQUEST_MINUTE の形式で保存します。 。ニーズに合わせて形式を変更できます。この例では、IP ベースのレート制限を使用しており、レート制限は 1 分ごとに適用されます。

ステップ 3:インクリメント アクションを使用した Redis ノード
Redis を作成します。 前述のように、ノードが Upstash Redis に接続されました。ここでは、前の手順で設定したフィールドを Redis キーとして使用します。 Increment アクションを使用すると、このキーは最初のリクエストで作成され、後続のリクエストで 1 ずつ増分されます。
TTL を 60 に設定すると、キーが 1 分で消えてスペースが解放されます。

ステップ 4:条件付き応答を持つ If ノード
IF を追加します 許可されたリクエストとブロックされたリクエストを処理するノード。再度、ステップ 2 で設定したフィールドを使用します。 ステップ 3 の結果を取得するための JSON パラメータとして 。その結果は、ユーザーがエンドポイントにリクエストを送信した回数です。この例では、最大 4 つのリクエストを許可し、その後は次の分までブロックします。

ステップ 5.1:成功の応答
レート制限を超えていない場合は、ユーザーがエンドポイントを呼び出すことができます。このチェックが圧倒されたり悪用されたりしないように、実際のロジックをこのチェックの背後に配置してください。
テスト目的で、単純な成功メッセージを返します。

ステップ 5.2:失敗応答
制限を超えると、リクエストはブロックされます。
テスト目的で、単純な失敗メッセージを返します。

ワークフローをテストする
GET を送信します Webhook で定義された URL へのリクエスト。
1 分以内に、最初の 4 つのリクエストはパス パスに従いますが、後続のリクエストはブロックされ、制限パスに従います。
これで、n8n にレート制限が正常に実装されました。
カスタマイズと改善
この基本的な実装により、特定のニーズに基づいて簡単にカスタマイズおよび改善できる強固な基盤が得られます。
時間枠の調整
- 時間制限 :時間あたりのレート制限のために TTL を 3600 秒に変更します
- 1 日の制限 :1 日あたりのリクエスト制限の TTL を 86400 秒に設定します
- カスタムウィンドウ :ユースケースに合った任意の期間に TTL を調整します
さまざまな制限戦略
- ユーザーベースの制限 :
Authorizationのユーザー ID を使用します。 認証されたリクエストの IP アドレスの代わりにヘッダー - API エンドポイント固有 :リソース要件に基づいてエンドポイントごとに異なる制限。
- 地理的制限 :
X-Forwarded-Forを使用した国または地域によるレート制限 またはCF-IPCountryヘッダー
エラー処理
- 再試行メカニズム :Upstash Redis はデフォルトでこれを提供します。
- サーキットブレーカーのパターン :Redis が失敗した場合にレート制限を一時的に無効にする
モニタリングと分析
- リアルタイム ダッシュボード :Upstash コンソールでレート制限のヒットと違反を監視する
- 使用パターン :リクエスト パターンを分析して制限を最適化する
- 警報システム :異常なトラフィックの急増に関する通知を設定する
- パフォーマンス指標 :応答時間とシステムの状態を追跡する
結論
このアルゴリズムの利点は、そのシンプルさと拡張性です。基本的な IP ベースの制限から始めて、ニーズの進化に応じて、ユーザー認証、段階的な制限、高度なモニタリングなどの高度な機能を徐々に追加できます。
n8n ワークフロー自動化プラットフォームと Upstash Redis の強力な機能を組み合わせることで、特定の要件に合わせた堅牢でスケーラブルなレート制限ソリューションを作成する無限の可能性が得られます。
さらに読む
レート制限と n8n についてさらに詳しく知りたいですか?以下のリソースを確認してください:
- Redis をアップスタッシュ
- n8n
- アルゴリズム
-
RedisDaysサンフランシスコ2022の概要
RedisDays San Franciscoは、Redis開発者コミュニティに完全に捧げられた日でした。これらのセッションでは、ゲストスピーカーが、Redisのリアルタイムデータイノベーションが、デベロッパーエクスペリエンスを簡素化することで、コミュニティがアプリをより迅速に構築するのにどのように役立っているかを紹介しました。新製品の発表、製品の更新、および段階的なウォークスルーにより、RedisDays San Franciscoは、開発者コミュニティにアプリ開発をより簡単かつ迅速にするために必要なツールを提供することを目的としていました。さっそく飛び込みましょう。 Redisスタックの紹
-
Redis INCRBYFLOAT –Redisで浮動小数点値をインクリメントする方法
このチュートリアルでは、redisデータストアのキーに格納されている浮動小数点値を表す文字列をインクリメントする方法について学習します。このために、Redis INCRBYFLOATを使用します 指図。 INCRBYFLOATコマンド このコマンドは、キーに格納されている浮動小数点数を表す文字列を指定された値だけインクリメントするために使用されます。キーが存在しない場合は、インクリメント操作を実行する前に、最初にキーが作成されて0に設定されます。キーが存在するが、キーに格納されている値が間違ったデータ型(文字列データ型ではない)であるか、倍精度浮動小数点数として表現できない文字列値が含