コンテンツにスキップ
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
  • Get Started
  • 外部サービスの利用
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
  • 前提条件
  • 詳細な手順
    • HTTP および JSON のサポートを含める
    • サードパーティのhttpリクエストの呼び出し
    • 応答エラーを処理する
    • サードパーティのレスポンスからのJSONデータを処理する
    • 完全なコードの一覧
    • テストコードを更新する
  • 次の手順
旧バージョンのドキュメントを参照しています。 最新のドキュメントはこちらをご参照ください。

外部サービスの利用

Kong Gatewayは、セキュリティ、トラフィック管理、監視、分析に関する機能を提供します。さらに、 Kong Gatewayをビジネスロジックの補助的な開発レイヤーとして使用できます。アップストリームサービスからのAPI応答をサードパーティサービスのデータで装飾する目的が、一般的なユースケースです。

前提条件

このページはカスタムプラグインを開発するための「はじめに」 ガイドの第4章です。これらの手順はガイドの前の章を参照しており、同じ開発者ツールの 前提条件を必要とします。

詳細な手順

以下は、httpクライアントを使用して外部サービスからデータを取得し、JSON値を解析する方法を示すステップバイステップの説明です。解析されたデータを使用して、APIゲートウェイクライアントに返す前に応答データに値を追加する方法を説明します。

HTTP および JSON のサポートを含める

まず、HTTP と JSON の構文解析サポートへのアクセスを可能にする 2 つの新しいライブラリを handler.lua ファイルにインポートします。

lua-resty-httpライブラリを使用して、HTTPクライアントをサードパーティに接続します。このライブラリは、ここで使用する単一のHTTPリクエストを作成するための簡単なインターフェースを提供しますが、ライブラリを使用する際のすべてのオプションについてはドキュメントを参照してください。

JSONサポートには、高速かつ標準に準拠したJSONサポートを提供するlua-cjson ライブラリを使用します。lua-cjsonは、 例外のないエンコーディングサポートとデコーディングサポートを可能にするライブラリのsafeバリアント をサポートしています。

新しく導入された要素を最上位のhandler.luaに追加します。

local http  = require("resty.http")
local cjson = require("cjson.safe")

サードパーティのhttpリクエストの呼び出し

lua-resty-httpライブラリは、サードパーティのサービスへの 連絡に使用できる単純なHTTPリクエスト関数(request_uri)を提供します。ここでは httpbin.org/anything へのGETリクエストの呼び出しを表示しますレスポンスに 様々な情報をエコーバックするAPIです。

handler.luaモジュール内のMyPluginHandler:response関数の先頭に以下を追加します。

local httpc = http.new()

local res, err = httpc:request_uri("http://httpbin.org/anything", {
  method = "GET",
})

サードパーティのサービスへのリクエストが成功した場合、 res 変数には応答が含まれます。成功したレスポンスの処理方法を示す前のエラーイベントはどうなりますか? err の戻り値にエラーが表示されます。 それらを処理するためのオプションを見てみましょう。

応答エラーを処理する

Kong Gateway プラグイン開発キット は、エラー状態の処理に役立つさまざまな機能を提供しています。

この例では、アップストリームサービスからの応答を処理し、 サードパーティのサービスからの値を使用してクライアントの応答を装飾します。 サードパーティのサービスへのリクエストが失敗した場合は、選択肢があります。 応答の処理を終了してエラーをクライアントに返すか、 または、応答の処理を続行するとカスタムヘッダーロジックは完了しません。 この例では、 応答処理を終了し、クライアントに500内部サーバーエラーを返しています。

httpc:request_uriを呼び出したら、以下のコードを MyPluginHandler:response 関数にすぐに追加してください。

if err then
  return kong.response.error(500,
    "Error when trying to access 3rd party service: " .. err,
    { ["Content-Type"] = "text/html" })
end

代わりに処理を続行することを選択した場合は、次のように、MyPluginHandler:response 関数からのエラーメッセージとreturnをログに記録できます。

if err then
    kong.log("Error when trying to access 3rd party service:", err)
    return
end

サードパーティのレスポンスからのJSONデータを処理する

このサードパーティのサービスはレスポンス本文に JSON オブジェクトを返します。ここでは、JSON 本文から単一の値を抽出して解析する方法を説明します。

request_uri 関数から受け取った res.body 値を渡す lua-cjson ライブラリ内の decode 関数を使用します。

local body_table, err = cjson.decode(res.body)

decode関数は値のタプルを返します。最初の値に含まれるのはデコードに成功した結果で、解析データの掲載テーブルとしてJSON形式で表示されます。 エラーが発生した場合は、2番目の値にエラー情報(あるいは成功時にnil)が表示されます。

上記の HTTP 処理と同様に、エラーが発生した場合はクライアントにエラーレスポンスを返し、処理を停止します。前の行の後の MyPluginHandler:response 関数に以下を追加します。

if err then
  return kong.response.error(500,
    "Error while decoding 3rd party service response: " .. err,
    { ["Content-Type"] = "text/html" })
end

この時点で、エラー状態にならなければ、クライアントの応答を装飾するために使用できるサードパーティからの有効な回答が得られます。 httpbin サービスは、要求されたURLのエコーであるurlフィールドを含むさまざまなフィールドを返します。この例では、前のエラー処理の後に次のコードを追加して、 urlフィールドをクライアントのレスポンスに渡します。

kong.response.set_header(conf.response_header_name, body_table.url)

コードの各セクションを分類しました。以下は handler.lua ファイルの完全なコード一覧です。

完全なコードの一覧

local http  = require("resty.http")
local cjson = require("cjson.safe")

local MyPluginHandler = {
  PRIORITY = 1000,
  VERSION = "0.0.1",
}

function MyPluginHandler:response(conf)

  kong.log("response handler")

  local httpc = http.new()

  local res, err = httpc:request_uri("http://httpbin.org/anything", {
    method = "GET",
  })

  if err then
    return kong.response.error(500,
      "Error when trying to access 3rd party service: " .. err,
      { ["Content-Type"] = "text/html" })
  end

  local body_table, err = cjson.decode(res.body)

  if err then
    return kong.response.error(500,
      "Error when decoding 3rd party service response: " .. err,
      { ["Content-Type"] = "text/html" })
  end

  kong.response.set_header(
    conf.response_header_name,
    body_table.url)

end

return MyPluginHandler

テストコードを更新する

この段階では、pongo run コマンドを再実行して以前に構築した統合テストを実行すると 、エラーとなります。ヘッダーの期待値が response から http://httpbin.org/anything に変更されました。spec/my-plugin/01-integration_spec.lua ファイルを更新して、ヘッダーの新しい値をアサートします。

-- validate the value of that header
assert.equal("http://httpbin.org/anything", header_value)

pongo runを使用してテストを再実行し、成功を確認します。

...
[----------] Global test environment teardown.
[==========] 2 tests from 1 test file ran. (23171.28 ms total)
[  PASSED  ] 2 tests.

このガイドでは、作業を開始するための例を示します。実際のプラグイン開発シナリオでは、実際に使用されているサードパーティのサービスへのネットワーク呼び出しを行うのではなく、模擬サービスを使用してテスト依存関係を提供することで、サードパーティサービスの統合テストを構築する必要があります。Pongoは、この目的のためにテスト依存関係をサポートしています。テスト依存関係の設定の詳細については、Pongoのドキュメントをご覧ください。

次の手順

Kong Gatewayプラグインをデプロイすることは、エンドツーエンドの開発パイプラインを構築する 最後のステップです。次の章では、デプロイのオプションについて説明し、 手順を説明するガイドを提供します。


前へ プラグイン設定を追加
次へ プラグインのデプロイ
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