コンテンツにスキップ
Kong Logo | Kong Docs Logo
  • ドキュメント
    • API仕様を確認する
      View all API Specs すべてのAPI仕様を表示 View all API Specs arrow image
    • ドキュメンテーション
      API Specs
      Kong Gateway
      軽量、高速、柔軟なクラウドネイティブAPIゲートウェイ
      Kong Konnect
      SaaSのエンドツーエンド接続のための単一プラットフォーム
      Kong AI Gateway
      GenAI インフラストラクチャ向けマルチ LLM AI Gateway
      Kong Mesh
      Kuma と Envoy をベースにしたエンタープライズサービスメッシュ
      decK
      Kongの構成を宣言型で管理する上で役立ちます
      Kong Ingress Controller
      Kubernetesクラスタ内で動作し、Kongをプロキシトラフィックに設定する
      Kong Gateway Operator
      YAMLマニフェストを使用してKubernetes上のKongデプロイメントを管理する
      Insomnia
      コラボレーティブAPI開発プラットフォーム
  • Plugin Hub
    • Plugin Hubを探索する
      View all plugins すべてのプラグインを表示 View all plugins arrow image
    • 機能性 すべて表示 View all arrow image
      すべてのプラグインを表示
      AI's icon
      AI
      マルチ LLM AI Gatewayプラグインを使用してAIトラフィックを管理、保護、制御する
      認証's icon
      認証
      認証レイヤーでサービスを保護する
      セキュリティ's icon
      セキュリティ
      追加のセキュリティレイヤーでサービスを保護する
      トラフィック制御's icon
      トラフィック制御
      インバウンドおよびアウトバウンドAPIトラフィックの管理、スロットル、制限
      サーバーレス's icon
      サーバーレス
      他のプラグインと組み合わせてサーバーレス関数を呼び出します
      分析と監視's icon
      分析と監視
      APIとマイクロサービストラフィックを視覚化、検査、監視
      変革's icon
      変革
      Kongでリクエストとレスポンスをその場で変換
      ログ記録's icon
      ログ記録
      インフラストラクチャに最適なトランスポートを使用して、リクエストと応答データをログに記録します
  • サポート
  • コミュニティ
  • Kongアカデミー
デモを見る 無料トライアルを開始
Kong Gateway
3.8.x
  • Home icon
  • Kong Gateway
  • Plugin Development
  • カスタムロジックの実装
report-issue問題を報告する
  • Kong Gateway
  • Kong Konnect
  • Kong Mesh
  • Kong AI Gateway
  • Plugin Hub
  • decK
  • Kong Ingress Controller
  • Kong Gateway Operator
  • Insomnia
  • Kuma

  • ドキュメント投稿ガイドライン
  • 3.10.x (latest)
  • 3.9.x
  • 3.8.x
  • 3.7.x
  • 3.6.x
  • 3.5.x
  • 3.4.x (LTS)
  • 3.3.x
  • 2.8.x (LTS)
  • アーカイブ (2.6より前)
  • はじめに
    • Kong Gatewayの概要
    • サポート
      • バージョンサポートポリシー
      • サードパーティの依存関係
      • ブラウザサポート
      • 脆弱性パッチ適用プロセス
      • ソフトウェア部品表
    • 安定性
    • リリースノート
    • 破壊的な変更
      • Kong Gateway 3.8.x
      • Kong Gateway 3.7.x
      • Kong Gateway 3.6.x
      • Kong Gateway 3.5.x
      • Kong Gateway 3.4.x
      • Kong Gateway 3.3.x
      • Kong Gateway 3.2.x
      • Kong Gateway 3.1.x
      • Kong Gateway 3.0.x
      • Kong Gateway 2.8.x 以前
    • キーコンセプト
      • サービス
      • ルート
      • コンシューマ
      • アップストリーム
      • プラグイン
      • コンシューマグループ
    • How Kong Works
      • ルーティングトラフィック
      • ロードバランシング
      • ヘルスチェックとサーキットブレーカ
    • 用語集
  • Kong を始めよう
    • Kong をゲットする
    • サービスとルート
    • レート制限
    • プロキシキャッシュ
    • キー認証
    • ロードバランシング
  • コングをインストールする
    • 概要
    • Kubernetes
      • 概要
      • Kong Gatewayをインストール
      • Admin API
      • Kong Manager をインストールする
    • Docker
      • docker run を使用する
      • 独自の Docker イメージをビルドする
    • Linux
      • Amazon Linux
      • Debian
      • Red Hat
      • Ubuntu
    • インストール後
      • データストアを設定
      • エンタープライズライセンスを適用
      • Kong Managerを有効にする
  • Kong in production
    • 展開のトポロジーズ
      • 概要
      • ハイブリッドモード
        • 概要
        • ハイブリッドモードでKong Gatewayをデプロイする
      • DB-lessデプロイ
      • 繁体字版
    • Running Kong
      • non-rootユーザーとしてKongを実行しています
      • 管理者 API の保護
      • systemdの使用
    • アクセスコントロール
      • コングゲートウェイを安全に開始
      • プログラムによる管理者の作成
      • RBAC を有効にする
    • ライセンス
      • 概要
      • ライセンスをダウンロード
      • エンタープライズライセンスのデプロイ
      • ライセンスAPIの使用
      • ライセンス使用状況をモニターする
    • ネットワーク
      • デフォルトのポート
      • DNSに関する考察
      • ネットワークとファイアウォール
      • CP/DP Communication through a Forward Proxy
      • PostgreSQL TLS
        • PostgreSQL TLS の設定
        • PostgreSQL TLS のトラブルシューティング
    • Kongの設定ファイル
    • 環境変数
    • KongからウェブサイトとAPIを提供する
    • モニタリング
      • 概要
      • Prometheus
      • StatsD
      • Datadog
      • ヘルスチェックプローブ
      • AIメトリクスを公開してグラフ
    • トレース
      • 概要
      • カスタム・トレース・エクスポーターの作成
      • トレースAPIリファレンス
    • リソースサイズのガイドライン
    • セキュリティアップデートプロセス
    • ブルー・グリーンの展開
    • カナリアのデプロイ
    • クラスタリングリファレンス
    • パフォーマンス
      • パフォーマンステストのベンチマーク
      • パフォーマンスのベンチマークを作成
      • Brotli圧縮によるパフォーマンスの向上
    • ロギングとデバッグ
      • ログの参照
      • ダイナミックログレベルの更新
      • ゲートウェイログをカスタマイズ
      • デバッグリクエスト
      • AIゲートウェイ分析
    • gRPCサービスの設定
    • 式ルータを使用
    • アップグレードと移行
      • 香港ゲートウェイ3.x.xをアップグレードする
      • バックアップと復元
      • アップグレードの戦略
        • デュアルクラスターのアップグレード
        • インプレイスアップグレード
        • 青緑色のアップグレード
        • ローリングアップグレード
      • 2.8 LTSから3.4 LTSにアップグレード
      • OSSからエンタープライズへ移行
      • 移行ガイドライン Cassandra から PostgreSQL
      • 新しい DNS クライアントに移行
      • 破壊的な変更
  • Kong Gateway Enterprise
    • 概要
    • シークレット管理
      • 概要
      • はじめに
      • ローテーション
      • 高度な使い方
      • バックエンドの設定
        • 概要
        • 環境変数
        • AWS シークレットマネージャー
        • Azure Key Vault
        • Google Cloud Secret Manager
        • HashiCorp Vault
      • How-To
        • AWS シークレットマネージャでデータベースを保護する
      • 参照フォーマット
    • 動的なプラグインの順序
      • 概要
      • 動的なプラグインの順序を始めましょう
    • 監査ログ
    • キーリングとデータ暗号化
    • ワークスペース
    • コンシューマグループ
    • イベントフック
    • データ プレーンレジリエンスの設定
    • 制御機の停止管理について
    • FIPS 140-2
      • 概要
      • FIPS 準拠パッケージをインストール
      • FIPS 140-2 準拠プラグイン
    • AWS IAMでKong Gateway Amazon RDSデータベースを認証する
    • 署名された香港の画像の署名を確認します
    • 署名された香港画像のビルド証明書を確認する
  • Kong AI Gateway
    • 概要
    • AI ゲートウェイを始めよう
    • LLM プロバイダー統合ガイド
      • OpenAI
      • Cohere
      • Azure
      • Anthropic
      • ミストラル
      • Llama2
    • AIプラットフォーム統合ガイド
      • Gemini
      • Amazon Bedrock
    • AIゲートウェイ分析
    • AI指標を公開・グラフ
    • AI Gateway plugins
  • Kong Manager
    • 概要
    • Kong Managerを有効にする
    • Kong Manager を始めましょう
      • サービスとルート
      • レート制限
      • プロキシキャッシュ
      • コンシューマーとの認証
      • 負荷バランス
    • 認証と承認
      • 概要
      • スーパー管理者を作成
      • ワークスペースとチーム
      • パスワードとRBACトークンをリセット
      • ベーシック認証
      • LDAP
        • LDAP の設定
        • LDAP サービス ディレクトリ マッピング
      • OIDC
        • OIDCの設定
        • OIDC 認証済みグループマッピング
        • 以前の設定から移行
      • セッション
      • RBAC
        • 概要
        • RBACを有効にする
        • ロールと権限を追加
        • ユーザーを作成
        • 管理者を作成
    • ネットワーク設定
    • ワークスペース
    • 顧客グループを作成
    • メールを送信中
    • トラブルシューティング
  • カスタムプラグインを開発
    • 概要
    • はじめに
      • はじめに
      • プラグインプロジェクトの設定
      • プラグインテストを追加
      • プラグイン設定を追加
      • 外部サービスを消費する
      • プラグインをデプロイ
    • ファイル構造
    • カスタムロジックの実装
    • プラグインの設定
    • データストアへのアクセス
    • カスタムエンティティの保存
    • カスタムエンティティをキャッシュ中
    • 管理者 API の拡張
    • テストを書く
    • 設置と配布
    • プロキシ-ワズムフィルター
      • プロキシワズムフィルタを作成
      • プロキシ-ワズムフィルタの設定
    • プラグイン開発キット
      • 概要
      • kong.client
      • kong.client.tls
      • kong.cluster
      • kong.ctx
      • kong.ip
      • kong.jwe
      • kong.log
      • kong.nginx
      • kong.node
      • kong.plugin
      • kong.request
      • kong.response
      • kong.router
      • kong.service
      • kong.service.request
      • kong.service.response
      • kong.table
      • kong.telemetry.log
      • kong.tracing
      • kong.vault
      • kong.websocket.client
      • kong.websocket.upstream
    • 他の言語でのプラグイン
      • 移動
      • Javascript
      • Python
      • コンテナでのプラグインの実行
      • 外部プラグインのパフォーマンス
  • Kong Plugins
    • 概要
    • 認証リファレンス
    • 複数の認証プラグインを許可
    • プラグインのキュー
      • 概要
      • プラグインキューイングリファレンス
  • Admin API
    • 概要
    • 宣言設定
    • Enterprise API
      • 情報ルート
      • 健康ルート
      • タグ
      • デバッグルート
      • サービス
      • ルート
      • コンシューマ
      • プラグイン
      • 証明書
      • CA 証明書
      • SNI
      • アップストリーム
      • ターゲット
      • ヴォールト
      • キー
      • チェーンをフィルター
      • ライセンス
      • ワークスペース
      • RBAC
      • 管理者
      • コンシューマグループ
      • イベントフック
      • キーリングとデータ暗号化
      • 監査ログ
      • Status API
    • オープンソースAPI
  • 参照
    • kong.conf
    • Nginx ディレクティブの注入中
    • CLI
    • キー管理
    • 表現の言語
      • 概要
      • 言語リファレンス
      • パフォーマンスの最適化
    • ライブラリのレート制限
    • WebAssembly
    • FAQ
enterprise-switcher-icon 次に切り替える: OSS
On this pageOn this page
  • モジュール
  • 使用可能なコンテキスト
  • handler.luaの仕様書
    • BasePlugin モジュールからの移行
  • WebSocketプラグイン開発
    • ハンドラ関数
    • 非WebSocketサービスへのWebSocketリクエスト
  • プラグイン開発キット
  • プラグインの実行順序
    • Kong プラグイン
旧バージョンのドキュメントを参照しています。 最新のドキュメントはこちらをご参照ください。

カスタムロジックの実装

注 :この章は、Luaに精通していることを前提と しています。

Kong Gatewayプラグインを使うと、Kong Gatewayでプロキシされる リクエスト/レスポンスまたはTCPストリーム接続のライフサイクルにおいて、 いくつかのエントリポイントでカスタムロジックを(Luaに)注入できます。そのためには、ファイル kong.plugins.<plugin_name id="sl-md0000000">.handlerは、1つ以上のあらかじめ決められた 名前の関数のテーブルを返さなければなりません。この関数はトラフィックを 処理するときに、様々なフェーズでKong Gatewayによって呼び出されます。

最初に取るパラメータは常にselfです。init_workerとconfigureを除く すべての関数は、プラグイン構成を含むテーブルという第2のパラメータを 受け取ることができます。configureは特定のプラグインに関するすべての構成の配列を 受け取ります。

モジュール

kong.plugins.<plugin_name id="sl-md0000000">.handler

使用可能なコンテキスト

handler.lua ファイルで次のいずれかの関数を定義すると、Kong Gateway の実行ライフサイクルのさまざまなエントリポイントにカスタムロジックが実装されます。

  • HTTPモジュール は、HTTP/HTTPSリクエスト用に記述されるプラグインで使用されます | Function name | Kong Phase | Nginx Directives | Request Protocol | Description |——-|——-|——-|——-|——- | | init_worker | init_worker | init_worker_by_* | * | Executed upon every Nginx worker process’s startup. | configure | init_worker/timer | init_worker_by_* | * | Executed every time the Kong plugin iterator is rebuilt (after changes to configure plugins). | certificate | certificate | ssl_certificate_by_* | https, grpcs, wss | Executed during the SSL certificate serving phase of the SSL handshake. | rewrite | rewrite | rewrite_by_* | * | Executed for every request upon its reception from a client as a rewrite phase handler.
    In this phase, neither the Service nor the Consumer have been identified, hence this handler will only be executed if the plugin was configured as a global plugin. | access | access | access_by_* | http(s), grpc(s), ws(s) | Executed for every request from a client and before it is being proxied to the upstream service. | response | response | header_filter_by_*, body_filter_by_* | http(s), grpc(s) | Replaces both header_filter() and body_filter(). Executed after the whole response has been received from the upstream service, but before sending any part of it to the client. | header_filter | header_filter | header_filter_by_* | http(s), grpc(s) | Executed when all response headers bytes have been received from the upstream service. | body_filter | body_filter | body_filter_by_* | http(s), grpc(s) | Executed for each chunk of the response body received from the upstream service. Since the response is streamed back to the client, it can exceed the buffer size and be streamed chunk by chunk. This function can be called multiple times if the response is large. See the lua-nginx-module documentation for more details. | ws_handshake | ws_handshake | access_by_* | ws(s) | Executed for every request to a WebSocket service just before completing the WebSocket handshake. | ws_client_frame | ws_client_frame | content_by_* | ws(s) | Executed for each WebSocket message received from the client. | ws_upstream_frame | ws_upstream_frame| content_by_* | ws(s) | Executed for each WebSocket message received from the upstream service. | log | log | log_by_* | http(s), grpc(s) | Executed when the last response byte has been sent to the client. | ws_close | ws_close | log_by_* | ws(s) | Executed after the WebSocket connection has been terminated.

注: モジュールがresponse関数を実装している場合、kong.service.request.enable_buffering()関数が呼び出されているため、Kong Gatewayは自動的に「バッファリングされたプロキシ」モードをアクティブにします。現在のNginxの制限により、これはHTTP/2またはgRPCアップストリームでは機能しません。

予期しない動作変更を減らすため、プラグインが response と header_filter または body_filter の両方を実装している場合、Kong Gateway は起動しません。

  • ストリームモジュール は、TCPおよびUDPストリーム接続用に記述されたプラグインに使用されます
機能名 Kong Phase Nginx Directives 説明
init_worker init_worker init_worker_by_* すべてのNginxワーカープロセスの起動時に実行されます。
configure init_worker/timer init_worker_by_* Kongプラグインイテレータが再構築されるたびに(プラグイン構成の変更後に)実行されます。
preread preread preread_by_* 接続ごとに 1 回実行されます。
log log log_by_* 接続が閉じられた後、接続ごとに 1 回実行されます。
certificate certificate ssl_certificate_by_* SSLハンドシェイクのSSL証明書提供フェーズ中に実行されます。

init_worker と configure を除くすべての関数は、Kong Gateway の呼び出し時に指定されたパラメータ(プラグインの構成)を受け取ります。このパラメータは Lua テーブルであり、プラグインのスキーマ(schema.lua モジュールに記述)に従ってユーザーが定義した値が含まれます。プラグインのスキーマについて、次の章で詳しく説明します。configure は、特定のプラグインで有効になっているすべてのプラグイン構成の配列で呼び出されます(プラグインのアクティブな構成がない場合は、nil が渡されます)。init_worker と configure はリクエストまたはフレームの外側で実行されますが、残りのフェーズは受信したリクエストやフレームにバインドされます。

UDP ストリームには実際の接続がないことに注意してください。Kong Gateway は 同一の起点、宛先のホストとポートを持つ全パケットを単一接続 とみなします。パケットがない状態が設定可能な時間経過すると、接続は 閉じられたとみなされ、 log関数が実行されます。

configureハンドラはKong 3.5で追加され、3.4 LTSにバックポートされました。現在、この新しいフェーズに対するフィードバックを求めており、その署名が将来変更される可能性がわずかにあります。

handler.luaの仕様書

Kong Gateway はリクエストを フェーズ で処理します。プラグインは、リクエストがプロキシされている間に各フェーズが実行されるときに、Kong Gateway によってアクティブ化されるコードです。

フェーズでできることは限定されています。たとえば、init_worker フェーズは config パラメータにアクセスできません。これは、kong が各ワーカーを初期化しているときにその情報が利用できないためです。一方、configure にはプラグインのすべてのアクティブな構成が渡されます(設定されていない場合はnil)。

プラグインの handler.lua は、各フェーズで実行する必要がある関数を含むテーブルを返す必要があります。

Kong Gateway HTTP およびストリーム トラフィックを処理できます。フェーズには、 HTTPトラフィックを処理するときのみ実行されるもの、ストリームを処理するときに実行されるもの、 また、init_workerやlogなどのように、両種のトラフィックによって呼び出されるものがあります。

関数に加えて、プラグインは次の2つのフィールドを定義する必要があります。

  • VERSION情報フィールドであり、 Kong Gatewayによって直接使用されるものではありません。通常の場合、 プラグインのRockspecバージョンで定義されているバージョン(存在する場合)と一致します。
  • PRIORITY各フェーズを実行する前にプラグインをソートするために使用されます。 優先度の高いプラグインが最初に実行されます。このフィールドの詳細については、下記の プラグイン実行の順序を参照してください。

次のサンプルファイル、handler.lua は、HTTPとストリームトラフィックの両方で使用可能なすべてのフェーズでカスタム関数を定義します。このファイルには、フェーズが呼び出されるたびにログにメッセージを記述する以外の機能はありません。 注 プラグインはすべてのフェーズに機能を提供する必要はありません。

local CustomHandler = {
  VERSION  = "1.0.0",
  PRIORITY = 10,
}

function CustomHandler:init_worker()
  -- Implement logic for the init_worker phase here (http/stream)
  kong.log("init_worker")
end

function CustomHandler:configure(configs)
  -- Implement logic for the configure phase here
  --(called whenever there is change to any of the plugins)
  kong.log("configure")
end

function CustomHandler:preread(config)
  -- Implement logic for the preread phase here (stream)
  kong.log("preread")
end

function CustomHandler:certificate(config)
  -- Implement logic for the certificate phase here (http/stream)
  kong.log("certificate")
end

function CustomHandler:rewrite(config)
  -- Implement logic for the rewrite phase here (http)
  kong.log("rewrite")
end

function CustomHandler:access(config)
  -- Implement logic for the access phase here (http)
  kong.log("access")
end

function CustomHandler:ws_handshake(config)
  -- Implement logic for the WebSocket handshake here
  kong.log("ws_handshake")
end

function CustomHandler:header_filter(config)
  -- Implement logic for the header_filter phase here (http)
  kong.log("header_filter")
end

function CustomHandler:ws_client_frame(config)
  -- Implement logic for WebSocket client messages here
  kong.log("ws_client_frame")
end

function CustomHandler:ws_upstream_frame(config)
  -- Implement logic for WebSocket upstream messages here
  kong.log("ws_upstream_frame")
end

function CustomHandler:body_filter(config)
  -- Implement logic for the body_filter phase here (http)
  kong.log("body_filter")
end

function CustomHandler:log(config)
  -- Implement logic for the log phase here (http/stream)
  kong.log("log")
end

function CustomHandler:ws_close(config)
  -- Implement logic for WebSocket post-connection here
  kong.log("ws_close")
end

-- return the created table, so that Kong can execute it
return CustomHandler

上記の例では、最初のパラメータとしてselfを取る関数に関して、Luaの:短縮構文を使用していることに注意してください。access関数の同等な非省略形バージョンは次のようになります。

function CustomHandler.access(self, config)
  -- Implement logic for the access phase here (http)
  kong.log("access")
end

プラグインのロジックをすべてhandler.luaファイル内で定義する必要はありません。 これは複数のLuaファイル( モジュール とも呼ばれます)に分割できます。 handler.luaモジュールはrequireを使用して、プラグインに他のモジュールを含めることができます。

たとえば、次のプラグインは機能を3つのファイルに分割します。 access.luaとbody_filter.luaは関数を返します。これらはhandler.luaと 同じフォルダー内にあり、プラグインの構築に必要で、使用します。

-- handler.lua
local access = require "kong.plugins.my-custom-plugin.access"
local body_filter = require "kong.plugins.my-custom-plugin.body_filter"

local CustomHandler = {
  VERSION  = "1.0.0",
  PRIORITY = 10
}

CustomHandler.access = access
CustomHandler.body_filter = body_filter

return CustomHandler
-- access.lua
return function(self, config)
  kong.log("access phase")
end
-- body_filter.lua
return function(self, config)
  kong.log("body_filter phase")
end

実際のハンドラーコードの例については、Key-Authプラグインのソースコード を参照してください。

BasePlugin モジュールからの移行

BasePluginモジュールは非推奨となり、 Kong Gateway から削除されました。このモジュールを使用する古いプラグインがある場合は、次のセクションを置き換えます。

--  DEPRECATED --
local BasePlugin = require "kong.plugins.base_plugin"
local CustomHandler = BasePlugin:extend()
CustomHandler.VERSION  = "1.0.0"
CustomHandler.PRIORITY = 10

現在の同等のもの:

local CustomHandler = {
  VERSION  = "1.0.0",
  PRIORITY = 10,
}

:new()メソッドを追加したり、任意のCustomHandler.super.XXX:(self) メソッドを呼び出したりする必要はありません。

WebSocketプラグイン開発

ハンドラ関数

wsまたはwssプロトコルを使用するサービスへのハンドラ関数のリクエストは、通常のhttpリクエストとは異なるパスをプロキシ経由で経由します。したがって、それらのプラグインを開発する際に考慮しなければならない動作にはいくつかの違いがあります。

次のハンドラはWebSocketサービスでは実行 されません 。

  • access
  • response
  • header_filter
  • body_filter
  • log

以下のハンドラは WebSocket サービスに 固有の ハンドラです。

  • ws_handshake
  • ws_client_frame
  • ws_upstream_frame
  • ws_close

以下のハンドラは、WebSocket サービス と 非 WebSocket サービスの両方で実行されます。

  • init_worker * configure * certificate(TLS/SSLリクエストのみ)
  • rewrite

これらの違いがあっても、WebSocketサービスと非WebSocketサービスの両方をサポートするプラグインを開発することは可能です。以下に例を示します。

-- handler.lua
--
-- I am a plugin that implements both WebSocket and non-WebSocket handlers.
--
-- I can be enabled for ws/wss services, http/https/grpc/grpcs services, or
-- even as global plugin.
local MultiProtoHandler = {
  VERSION = "0.1.0",
  PRIORITY = 1000,
}

function MultiProtoHandler:access()
  kong.ctx.plugin.request_type = "non-WebSocket"
end

function MultiProtoHandler:ws_handshake()
  kong.ctx.plugin.request_type = "WebSocket"
end


function MultiProtoHandler:log()
  kong.log("finishing ", kong.ctx.plugin.request_type, " request")
end

-- the `ws_close` handler for this plugin does not implement any WebSocket-specific
-- business logic, so it can simply be aliased to the `log` handler
MultiProtoHandler.ws_close = MultiProtoHandler.log

return MultiProtoHandler

上記のように、 logハンドラーとws_closeハンドラーは互いに並行しています。多くの場合、 追加コードを書かずに一方を他方に エイリアス化することができます。この点に関してはaccessとws_handshakeハンドラも非常に よく似ています。注目すべき違いは、それぞれの文脈においてどのPDK機能が利用可能か、 または利用できないかという点です。たとえば、 kong.request.get_body() PDK関数は accessハンドラでは基本的にこの種のリクエストのと互換性がないため 使用しないでください。

非WebSocketサービスへのWebSocketリクエスト

WebSocketトラフィックは、http/httpsサービス経由でプロキシされる場合には非WebSocketリクエストとして扱われます。 そのため、httpハンドラ(access、header_filterなど)が実行され、WebSocketハンドラ(ws_handshake、ws_closeなど)は実行 されません 。

プラグイン開発キット

これらのフェーズで実装されるロジックは、リクエスト/応答オブジェクトやコアコンポーネントと相互作用しなければならない可能性が高いです(例:キャッシュやデータベースにアクセスするなど)。Kong Gatewayは、このようなプラグイン開発キット(または「PDK」)を提供します。 それは、プラグインが様々なゲートウェイ操作を実行するために使用できるLua関数および変数のセットと、Kong Gateway の将来のリリースとの互換性が保証されているためです。

Kong Gatewayとやりとりする必要があるロジックを実装しようとしている場合 (例えば、リクエストヘッダーの取得、プラグインからのレスポンスの生成、 いくつかのエラーまたはデバッグ情報のロギングなど)については、プラグイン開発キットリファレンスにご相談ください。

プラグインの実行順序

一部のプラグインは、一部の操作を実行するために他のプラグインの実行に依存する場合があります。たとえば、コンシューマの ID に依存するプラグインは、認証プラグインの 後 に実行する必要があります。これを考慮し、Kong Gateway はプラグインの実行間の 優先順位 を定義して、順序が尊重されるようにします。

プラグインの優先順位は、返されたハンドラテーブルで番号を受け入れるプロパティを 経由して、設定することができます。

CustomHandler.PRIORITY = 10

優先度が高ければ高いほど、他のプラグインのフェーズに対して、お使いのプラグインのフェーズがより早く実行されます ( :access()、:log() など)。

Kong プラグイン

Kong Gateway にバンドルされているすべてのプラグインには静的優先順位があります。 これは、ordering オプションを使用して動的に調整できます。詳細については、プラグインの動的順序付けを参照してください。

OSS
Enterprise

以下のリストには、オープンソース Kong Gatewayにバンドルされているすべての プラグインが含まれています。

注: Correlation IDプラグインの優先順位は、実行しているのがオープン ソースモードか無料モードかによって変わります。 無料モードはKong Gateway Enterpriseパッケージを使用します。 このプラグインの正しい優先順位を確認するには、 エンタープライズ タブに切り替えてください。

バンドルされたプラグインの現在の実行順序は次のとおりです。

プラグイン 優先順位
pre-function 1000000
zipkin 100000
bot-detection 2500
cors 2000
session 1900
acme 1705
jwt 1450
oauth2 1400
key-auth 1250
ldap-auth 1200
basic-auth 1100
hmac-auth 1030
grpc-gateway 998
ip-restriction 990
request-size-limiting 951
acl 950
rate-limiting 910
response-ratelimiting 900
request-transformer 801
response-transformer 800
ai-request-transformer 777
ai-prompt-template 773
ai-prompt-decorator 772
ai-prompt-guard 771
ai-proxy 770
ai-response-transformer 769
standard-webhooks 760
aws-lambda 750
azure-functions 749
proxy-cache 100
opentelemetry 14
prometheus 13
http-log 12
statsd 11
datadog 10
file-log 9
udp-log 8
tcp-log 7
loggly 6
syslog 4
grpc-web 3
request-termination 2
correlation-id 1
post-function -1000

次のリストには、Kong Gateway Enterprise サブスクリプションにバンドルされているすべてのプラグインが含まれています。この優先順位は、無料モードで実行されているプラグイン(Kong Gateway Enterprise パッケージを使用)にも適用されます。

バンドルされたプラグインの現在の実行順序は次のとおりです。

プラグイン 優先順位
pre-function 1000000
app-dynamics 999999
correlation-id 100001
zipkin 100000
exit-transformer 9999
bot-detection 2500
cors 2000
jwe-decrypt 1999
session 1900
acme 1705
oauth2-introspection 1700
mtls-auth 1600
degraphql 1500
jwt 1450
oauth2 1400
vault-auth 1350
key-auth 1250
key-auth-enc 1250
ldap-auth 1200
ldap-auth-advanced 1200
basic-auth 1100
openid-connect 1050
hmac-auth 1030
jwt-signer 1020
saml 1010
header-cert-auth 1009
json-threat-protection 1009
xml-threat-protection 1008
websocket-validator 1006
websocket-size-limit 1003
request-validator 999
grpc-gateway 998
tls-handshake-modifier 997
tls-metadata-headers 996
ip-restriction 990
request-size-limiting 951
acl 950
opa 920
rate-limiting 910
rate-limiting-advanced 910
ai-rate-limiting-advanced 905
graphql-rate-limiting-advanced 902
response-ratelimiting 900
route-by-header 850
oas-validation 840
jq 811
request-transformer-advanced 802
request-transformer 801
response-transformer 800
response-transformer-advanced 800
route-transformer-advanced 780
ai-request-transformer 777
ai-semantic-prompt-guard 775
ai-azure-content-safety 774
ai-prompt-template 773
ai-prompt-decorator 772
ai-prompt-guard 771
ai-proxy 770
ai-proxy-advanced 770
ai-response-transformer 769
ai-semantic-cache 765
standard-webhooks 760
upstream-oauth 760
confluent 752
kafka-upstream 751
aws-lambda 750
azure-functions 749
upstream-timeout 400
proxy-cache 100
proxy-cache-advanced 100
graphql-proxy-cache-advanced 99
forward-proxy 50
canary 20
opentelemetry 14
prometheus 13
http-log 12
statsd 11
statsd-advanced 11
datadog 10
file-log 9
udp-log 8
tcp-log 7
loggly 6
kafka-log 5
syslog 4
grpc-web 3
request-termination 2
mocking -1
post-function -1000

前へ ファイル構成
次へ プラグインの設定
Thank you for your feedback.
Was this page useful?
情報が多すぎる場合 close cta icon
Kong Konnectを使用すると、より多くの機能とより少ないインフラストラクチャを実現できます。月額1Mリクエストが無料。
無料でお試しください
  • Kong
    APIの世界を動かす

    APIマネジメント、サービスメッシュ、イングレスコントローラーの統合プラットフォームにより、開発者の生産性、セキュリティ、パフォーマンスを大幅に向上します。

    • 製品
      • Kong Konnect
      • Kong Gateway Enterprise
      • Kong Gateway
      • Kong Mesh
      • Kong Ingress Controller
      • Kong Insomnia
      • 製品アップデート
      • 始める
    • ドキュメンテーション
      • Kong Konnectドキュメント
      • Kong Gatewayドキュメント
      • Kong Meshドキュメント
      • Kong Insomniaドキュメント
      • Kong Konnect Plugin Hub
    • オープンソース
      • Kong Gateway
      • Kuma
      • Insomnia
      • Kongコミュニティ
    • 会社概要
      • Kongについて
      • お客様
      • キャリア
      • プレス
      • イベント
      • お問い合わせ
  • 利用規約• プライバシー• 信頼とコンプライアンス
© Kong Inc. 2025