コンテンツにスキップ
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.4.x LTS
  • 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.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リファレンス
    • リソースサイジングのガイドライン
    • ブルーグリーンデプロイメント
    • カナリアデプロイメント
    • クラスタリングリファレンス
    • パフォーマンスベンチマークの確立
    • ログとデバッグ
      • ログ参照
      • 動的ログレベルの更新
      • ゲートウェイログのカスタマイズ
      • デバッグリクエスト
    • gRPCサービスを構成する
    • Expressionsルーターを使用する
    • アップグレードと移行
      • Kong Gateway 3.x.xのアップグレード
      • バックアップと復元
      • アップグレード戦略
        • デュアルクラスターのアップグレード
        • インプレースアップグレード
        • ブルーグリーンアップグレード
        • ローリングアップグレード
      • 2.8 LTS から 3.4 LTS へのアップグレード
      • OSS から Enterprise への移行
      • Cassandra から PostgreSQL への移行ガイドライン
      • 互換性のない変更
  • Kong Gateway Enterprise
    • 概要
    • Kong バイタル
      • 概要
      • メトリクス
      • InfluxDBによる分析
      • Prometheusによる分析
      • PostgreSQLにおける分析ストレージの見積もり
    • シークレット管理
      • 概要
      • はじめる
      • シークレットローテーション
      • 高度な使用法
      • バックエンド
        • 概要
        • 環境変数
        • AWS Secrets Manager
        • Azure Key Vault
        • Google Cloud Secret Manager
        • HashiCorp Vault
      • ハウツー
        • AWS Secrets Manager によるデータベースの保護
      • 参照形式
    • 動的なプラグインの順序
      • 概要
      • 動的プラグインの注文を開始する
    • Dev Portal
      • Overview
      • ポータルを有効にする
      • OpenAPI仕様の公開
      • 構造とファイルタイプ
      • テーマファイル
      • テンプレートを使う
      • エディターの使用
      • 認証と認可
        • Basic Auth
        • Key Auth
        • OIDC
        • セッション
        • カスタム登録フィールドの追加
        • 開発者の管理
        • 開発者の役割とコンテンツ権限
      • アプリケーション登録
        • 認可プロバイダー戦略
        • アプリケーション登録を有効にする
        • アプリケーション登録のための鍵認証を有効にする
        • 外部認証を有効にする
          • 外部OAuth2サポート
          • 外部認証のためのOktaとKongのセットアップ
          • 外部認証のためのAzure ADとKongのセットアップ
        • アプリケーションの管理
      • 開発ポータルのカスタマイズ
        • テーマ編集
        • ワークスペース間でのテンプレートの移行
        • Markdownレンダリングモジュール
        • ポータルメールのカスタマイズ
        • JavaScriptアセットの追加と使用
        • 開発ポータルのシングルページアプリ
        • 代替OpenAPIレンダラー
      • SMTP
      • Workspaces
      • ヘルパーCLI
      • ポータルAPIドキュメント
    • 監査ログ
    • キーリングとデータ暗号化
    • ワークスペース
    • コンシューマグループ
    • イベントフック
    • データプレーン(DP)のレジリエンスの構成
    • コントロールプレーン(CP)の停止管理について
    • FIPS 140-2
      • 概要
      • FIPS 準拠パッケージのインストール
      • FIPS 140-2準拠のプラグイン
    • AWS IAMを使用してKong Gateway Amazon RDSデータベースを認証する
    • 署名付き Kong イメージのビルド来歴を確認
  • 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 フィルターの作成
    • プラグイン開発キット
      • 概要
      • 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
    • 概要
    • インフォメーションルート
    • ヘルスルート
    • タグ
    • ルートのデバッグ
    • サービス
    • ルート
    • コンシューマ
    • プラグイン
    • 証明書
    • CA 証明書
    • SNI
    • アップストリーム
    • ターゲット
    • 金庫
    • 鍵
    • フィルターチェーン
    • ライセンス
    • ワークスペース
    • RBAC
    • アドミン
    • コンシューマグループ
    • イベントフック
    • キーリングとデータ暗号化
    • 監査ログ
    • ステータスAPI
  • リファレンス
    • kong.conf
    • Nginxディレクティブの挿入
    • CLI
    • キー管理
    • パフォーマンステストのフレームワーク
    • 表現言語
      • 概要
      • 言語リファレンス
      • パフォーマンスの最適化
    • Rate Limitingライブラリ
    • Webアセンブリ
    • FAQ
enterprise-switcher-icon 次に切り替える: OSS
On this pageOn this page
  • モジュール
  • schema.luaの仕様書
  • 構成スキーマの説明
    • 例
旧バージョンのドキュメントを参照しています。 最新のドキュメントはこちらをご参照ください。

プラグインの設定

ほとんどの場合、プラグインがユーザーの あらゆるニーズに応答するよう設定できるのは理にかなっています。プラグインの設定は データストアに保存され、プラグインが実行されるときに Kongがそれを取得し、 handler.luaメソッドに渡すことができます。

構成は、 スキーマと呼ばれるKongのLuaテーブルで構成されています 。これには、ユーザーがAdmin APIを通じてプラグインを有効にするときに設定するキー/値のプロパティが含まれています。Kongは、プラグインに対するユーザーの設定を検証する方法を提供します。

ユーザーがAdmin APIにリクエストを発行し、 特定のサービス、ルート、コンシューマスキーマでプラグインを有効化または更新するときに、プラグインの構成が スキーマに対して検証されます。

たとえば、ユーザーが次のリクエストを実行します。

curl -X POST http://localhost:8001/services/<service-name-or-id id="sl-md0000000">/plugins \
  -d "name=my-custom-plugin" \
  -d "config.foo=bar"

configオブジェクトのすべてのプロパティが、スキーマに従って有効であれば、APIは201 Createdを返し、プラグインは構成とともにデータベースに保存されます。

{
  foo = "bar"
}

構成が有効でない場合、Admin APIは400 Bad Requestと適当なエラーメッセージを返します。

モジュール

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

schema.luaの仕様書

このモジュールは、プラグインが後でユーザーによって構成される方法を定義するプロパティとLuaテーブルを返すためのものです。使用可能なプロパティは以下のとおりです。

プロパティ名 Luaのタイプ 説明
name string プラグインの名前、たとえばkey-auth。
fields table フィールド定義の配列。
entity_checks function エンティティレベルの条件付き検証チェックの配列。

すべてのプラグインは、次のようなデフォルトフィールドを継承します。

フィールド名 Luaのタイプ 説明
id string 自動生成されたプラグインID。
name string プラグインの名前、たとえばkey-auth。
created_at number プラグイン設定の作成時間(エポックからの経過秒数)。
route table プラグインがバインドされているルート (存在する場合)。
service table プラグインがバインドされるサービス (該当する場合)。
consumer table 可能であれば、プラグインがバインドされるコンシューマ。
protocols table プラグインは指定されたプロトコルで実行されます。
enabled boolean プラグインが有効になっているかどうか。
tags table プラグインのタグ。

ほとんどの場合、これらのほとんどを無視してデフォルトを使用できます。または、プラグインを有効にする際にユーザーが値を指定できるようにすることもできます。

以下に、潜在的なschema.luaファイルの例を示します(いくつかのオーバーライドが適用されています)。

local typedefs = require "kong.db.schema.typedefs"


return {
  name = "<plugin-name id="sl-md0000000">",
  fields = {
    {
      -- this plugin will only be applied to Services or Routes
      consumer = typedefs.no_consumer
    },
    {
      -- this plugin will only run within Nginx HTTP module
      protocols = typedefs.protocols_http
    },
    {
      config = {
        type = "record",
        fields = {
          -- Describe your plugin's configuration's schema here.        
        },
      },
    },
  },
  entity_checks = {
    -- Describe your plugin's entity validation rules
  },
}

構成スキーマの説明

schema.luaファイルのconfig.fieldsプロパティには、プラグインの構成スキーマが記述されます。 それぞれプラグインの有効な構成プロパティであるフィールドについて、該当プロパティのルールの説明を含む定義が柔軟な配列形式で記述されます 以下に例を示します。

{
  name = "<plugin-name id="sl-md0000000">",
  fields = {
    config = {
      type = "record",
      fields = {
        {
          some_string = {
            type = "string",
            required = false,
          },
        },
        {
          some_boolean = {
            type = "boolean",
            default = false,
          },
        },
        {
          some_array = {
            type = "array",
            elements = {
              type = "string",
              one_of = {
                "GET",
                "POST",
                "PUT",
                "DELETE",
              },
            },
          },
        },
      },
    },
  },
}

以下は、プロパティに対して受け入れられる一般的な(すべてではありません)ルールのリストです(例については、上記のフィールドテーブルを参照してください)。

ルール 説明
type プロパティのタイプ。
required プロパティが必須かどうか
default プロパティの値が指定されていない場合のデフォルト値
elements array要素またはset要素のフィールド定義。
keys mapキーのフィールド定義です。
values map値のフィールド定義。
fields recordフィールドのフィールド定義。

他にもたくさんありますが、上記が一般的に使用されています。

フィールドバリデーターを追加することもできます。いくつか例を挙げます。

ルール 説明
between 入力された数値が許容値の間にあることを確認します。
eq 入力と許容値の等価性を確認します。
ne 入力された値が許可された値と一致していないことを確認します。
gt 数値が与えられた値より大きいかどうかをチェックします。
len_eq 入力文字列の長さが指定された値と等しいことを確認します。
len_min 入力文字列の長さが指定された値より大きいことを確認します。
len_max 入力文字列の長さが、指定された値以下であることを確認します。
match 入力文字列が指定されたLuaパターンと一致するかどうかを確認します。
not_match 入力文字列が指定されたLuaパターンと一致しないことを確認します。
match_all 入力文字列が指定されたすべてのLuaパターンと一致するかどうかを確認します。
match_none 入力文字列が指定されたLuaパターンのいずれかにも一致しないことを確認します。
match_any 入力文字列が指定されたLuaパターンのいずれかと一致するかどうかを確認します。
starts_with 入力文字列が指定された値で始まることを確認します。
one_of 入力文字列が受け入れられる値の 1 つであることを確認します。
contains 入力配列に指定した値が含まれているかどうかを調べます。
is_regex 入力文字列が有効な正規表現パターンであるかどうかを確認します。
custom_validator Luaで記述されたカスタム検証関数。

他にもバリデータがいくつかありますが、上記の表から、フィールドにバリデーションルールを指定する方法がよくわかります。

例

このschema.luaファイルはキー認証プラグイン用です:

-- schema.lua
local typedefs = require "kong.db.schema.typedefs"


return {
  name = "key-auth",
  fields = {
    {
      consumer = typedefs.no_consumer
    },
    {
      protocols = typedefs.protocols_http
    },
    {
      config = {
        type = "record",
        fields = {
          {
            key_names = {
              type = "array",
              required = true,
              elements = typedefs.header_name,
              default = {
                "apikey",
              },
            },
          },
          {
            hide_credentials = {
              type = "boolean",
              default = false,
            },
          },
          {
            anonymous = {
              type = "string",
              uuid = true,
            },
          },
          {
            key_in_body = {
              type = "boolean",
              default = false,
            },
          },
          {
            run_on_preflight = {
              type = "boolean",
              default = true,
            },
          },
        },
      },
    },
  },
}

したがって、プラグインのaccess()関数をhandler.luaに実装し、ユーザーがプラグインをデフォルト値で有効にすると、以下にアクセスできるようになります。

-- handler.lua

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

local kong = kong

function CustomHandler:access(config)

  kong.log.inspect(config.key_names)        -- { "apikey" }
  kong.log.inspect(config.hide_credentials) -- false
end


return CustomHandler

上記の例では、プラグイン開発キットの kong.log.inspect 関数を使用して、Kongのログに該当値を出力しています。


次のような複雑な例は、ロギングプラグインの最終形として使用できる可能性があります。

-- schema.lua
local typedefs = require "kong.db.schema.typedefs"


return {
  name = "my-custom-plugin",
  fields = {
    {
      config = {
        type = "record",
        fields = {
          {
            environment = {
              type = "string",
              required = true,
              one_of = {
                "production",
                "development",
              },
            },
          },
          {
            server = {
              type = "record",
              fields = {
                {
                  host = typedefs.host {
                    default = "example.com",
                  },
                },
                {
                  port = {
                    type = "number",
                    default = 80,
                    between = {
                      0,
                      65534
                    },
                  },
                },  
              },
            },
          },
        },
      },
    },
  },
}

このような設定により、ユーザーは次のようにプラグインに設定を POST できます。

curl -X POST http://localhost:8001/services/<service-name-or-id id="sl-md0000000">/plugins \
  -d "name=my-custom-plugin" \
  -d "config.environment=development" \
  -d "config.server.host=http://localhost"

そして、handler.luaでは以下が利用可能になります。

-- handler.lua

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

local kong = kong

function CustomHandler:access(config)

  kong.log.inspect(config.environment) -- "development"
  kong.log.inspect(config.server.host) -- "http://localhost"
  kong.log.inspect(config.server.port) -- 80
end


return CustomHandler

また、Key-Authプラグインのソースコードでスキーマの実際の例を見ることができます。


前へ カスタムロジックの実装
次へ データストアへのアクセス
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