コンテンツにスキップ
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.7.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.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 またはそれ以前
    • キーコンセプト
      • サービス
      • ルート
      • コンシューマ
      • アップストリーム
      • プラグイン
      • コンシューマグループ
    • Kongの仕組み
      • トラフィックのルーティング
      • ロードバランシング
      • ヘルスチェックとサーキットブレーカー
    • 用語集
  • Kongを始めましょう
    • Kongを入手
    • サービスとルート
    • Rate Limiting
    • プロキシキャッシュ
    • Key Authentication
    • ロードバランシング
  • Kongのインストール
    • 概要
    • Kubernetes
      • 概要
      • Kong Gatewayのインストール
      • Admin APIを構成する
      • Kong Managerのインストール
    • Docker
      • docker runの使用
      • 独自の Docker イメージをビルドする
    • Linux
      • Amazon Linux
      • Debian
      • Red Hat
      • Ubuntu
    • インストール後
      • データストアの設定
      • エンタープライズライセンスを適用する
      • Kong Managerを有効にする
  • 本番環境のKong
    • デプロイメントトポロジー
      • 概要
      • ハイブリッドモード
        • 概要
        • Kong Gatewayをハイブリッドモードでデプロイする
      • DBレスデプロイメント
      • 伝統的な
    • 実行中のKong
      • 非rootユーザーとしてKongを実行する
      • Admin APIの保護
      • systemdの使用
    • アクセス制御
      • Kong Gatewayを安全に起動する
      • プログラムによる管理者の作成
      • RBACを有効にする
    • ライセンス
      • 概要
      • ライセンスのダウンロード
      • エンタープライズライセンスのデプロイ
      • ライセンス APIの使用
      • ライセンス使用状況の監視
    • ネットワーキング
      • デフォルトポート
      • DNSに関する考慮事項
      • ネットワークとファイアウォール
      • フォワードプロキシ経由のCP/DP通信
      • PostgreSQL TLS
        • PostgreSQL TLSの構成
        • PostgreSQL TLSのトラブルシューティング
    • Kong設定ファイル
    • 環境変数
    • KongからのウェブサイトとAPIの提供
    • モニタリング
      • 概要
      • Prometheus
      • StatsD
      • Datadog
      • ヘルスチェックプローブ
    • トレーシング
      • 概要
      • カスタムトレースエクスポーターの記述
      • トレース APIリファレンス
    • リソースサイジングのガイドライン
    • セキュリティ更新プロセス
    • ブルーグリーンデプロイメント
    • カナリアデプロイメント
    • クラスタリングリファレンス
    • パフォーマンス
      • パフォーマンステストベンチマーク
      • パフォーマンスベンチマークの確立
      • Brotli圧縮によるパフォーマンスの向上
    • ログとデバッグ
      • ログ参照
      • 動的ログレベルの更新
      • ゲートウェイログのカスタマイズ
      • デバッグリクエスト
      • AI Gateway分析
    • gRPCサービスを構成する
    • Expressionsルーターを使用する
    • アップグレードと移行
      • Kong Gateway 3.x.xのアップグレード
      • バックアップと復元
      • アップグレード戦略
        • デュアルクラスターのアップグレード
        • インプレースアップグレード
        • ブルーグリーンアップグレード
        • ローリングアップグレード
      • 2.8 LTS から 3.4 LTS へのアップグレード
      • OSS から Enterprise への移行
      • Cassandra から PostgreSQL への移行ガイドライン
      • 互換性のない変更
  • Kong Gateway Enterprise
    • 概要
    • シークレット管理
      • 概要
      • はじめる
      • シークレットローテーション
      • 高度な使用法
      • バックエンド
        • 概要
        • 環境変数
        • AWS Secrets Manager
        • Azure Key Vault
        • Google Cloud Secret Manager
        • HashiCorp Vault
      • ハウツー
        • AWS Secrets Manager によるデータベースの保護
      • 参照形式
    • 動的なプラグインの順序
      • 概要
      • 動的プラグインの注文を開始する
    • 監査ログ
    • キーリングとデータ暗号化
    • ワークスペース
    • コンシューマグループ
    • イベントフック
    • データプレーン(DP)のレジリエンスの構成
    • コントロールプレーン(CP)の停止管理について
    • FIPS 140-2
      • 概要
      • FIPS 準拠パッケージのインストール
      • FIPS 140-2準拠のプラグイン
    • AWS IAMを使用してKong Gateway Amazon RDSデータベースを認証する
    • 署名付き Kong イメージの署名の検証
    • 署名付き Kong イメージのビルド来歴を確認
  • Kong AI Gateway
    • 概要
    • AI Gatewayを使ってみる
    • LLM プロバイダー統合ガイド
      • OpenAI
      • Cohere
      • Azure
      • Anthropic
      • Mistral
      • Llama2
    • AI Gateway分析
    • AI Gatewayプラグイン
  • Kong Manager
    • 概要
    • Kong Managerを有効にする
    • Kong Managerの使用を開始する
      • サービスとルート
      • Rate Limiting
      • プロキシキャッシュ
      • コンシューマによる認証
      • ロードバランシング
    • 認証と承認
      • 概要
      • スーパー管理者を作成する
      • ワークスペースとチーム
      • パスワードと RBAC トークンのリセット
      • Basic Auth
      • LDAP
        • LDAPの設定
        • LDAP サービスディレクトリマッピング
      • OIDC
        • OIDC を構成する
        • OIDC 認証済みグループマッピング
        • 以前の構成からの移行
      • セッション
      • RBAC
        • 概要
        • RBACを有効にする
        • ロールと権限を追加する
        • ユーザーの作成
        • 管理者の作成
    • ネットワーク構成
    • ワークスペース
    • コンシューマグループを作成する
    • メールの送信
    • トラブルシューティング
  • カスタムプラグインの開発
    • 概要
    • はじめる
      • 導入
      • プラグインプロジェクトの設定
      • プラグインテストを追加
      • プラグイン設定を追加
      • 外部サービスの利用
      • プラグインのデプロイ
    • ファイル構成
    • カスタムロジックの実装
    • プラグインの設定
    • データストアへのアクセス
    • カスタムエンティティの保存
    • カスタムエンティティのキャッシュ
    • Admin APIの拡張
    • テストを書く
    • インストールと配布
    • Proxy-Wasmフィルタ
      • proxy-wasm フィルターの作成
      • proxy-wasm フィルタの設定
    • プラグイン開発キット
      • 概要
      • 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.tracing
      • kong.vault
      • kong.websocket.client
      • kong.websocket.upstream
    • 他の言語のプラグイン
      • Go
      • Javascript
      • Python
      • コンテナ内でプラグインを実行する
      • 外部プラグインのパフォーマンス
  • Kong Plugins
    • 概要
    • 認証リファレンス
    • 複数の認証プラグインを許可する
    • プラグインキューイング
      • 概要
      • プラグインキューイングリファレンス
  • Admin API
    • 概要
    • 宣言型構成
    • エンタープライズ API
      • インフォメーションルート
      • ヘルスルート
      • タグ
      • ルートのデバッグ
      • サービス
      • ルート
      • コンシューマ
      • プラグイン
      • 証明書
      • CA 証明書
      • SNI
      • アップストリーム
      • ターゲット
      • 金庫
      • 鍵
      • フィルターチェーン
      • ライセンス
      • ワークスペース
      • RBAC
      • アドミン
      • コンシューマグループ
      • イベントフック
      • キーリングとデータ暗号化
      • 監査ログ
      • ステータスAPI
    • オープンソースAPI
  • リファレンス
    • kong.conf
    • Nginxディレクティブの挿入
    • CLI
    • キー管理
    • 表現言語
      • 概要
      • 言語リファレンス
      • パフォーマンスの最適化
    • Rate Limitingライブラリ
    • Webアセンブリ
    • 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
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
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
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
application-registration 995
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-azure-content-safety 774
ai-prompt-template 773
ai-prompt-decorator 772
ai-prompt-guard 771
ai-proxy 770
ai-response-transformer 769
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