Pre-function Plugin 解説と実用サンプル
Kong Gatewayは多機能なAPIゲートウェイですが、ちょっとした処理をサーバレス関数として内蔵できることをご存知でしょうか?
今回は、Luaスクリプトを使ってリクエストのBodyからUUIDを抽出し、Headerに追記&ログ出力するという実用的なサンプルをご紹介します。
Pre-function Pluginとは?
公式ドキュメントにある通り、pre-function
プラグインはリクエストをAPIに送信する前にLuaで処理を記述できる柔軟な機能です。
用途は多彩で:
- 条件分岐によるフィルタリング
- ヘッダー/ボディのカスタマイズ
- 軽量ログやモニタリング処理
- メンテナンス用の簡易ブロック処理
など、プラグイン化するほどじゃないけど、ちょっと処理したいというニーズにぴったりです。
実用例
今回は、リクエストボディにあるUUIDを抽出してヘッダーとログに追記する機能をServer Less機能で実現します。
処理の流れ
- リクエストBodyからUUIDを抽出(JSONパース)
- UUIDがあれば
x-uuid
ヘッダーに追記 - 抽出結果をログに出力(File Logプラグイン使用)
前提準備:サービスとルートを作成
|
|
File Log Plugin でログ出力(標準出力へ)
|
|
Pre-functionの設定
Nginxのフェーズ毎に、カスタムコードを実行することができます。フェーズに関する詳細内容は、以下をご参考ください。 https://nginx.org/en/docs/dev/development_guide.html#http_phases
|
|
上記のコードでは、access
フェーズとlog
フェーズに以下のコードを挿入しています。それぞれの意味をコメントで説明します。
|
|
|
|
リクエスト送信
uuid
をBodyに設定してリクエストを送信します。
|
|
すると、APIに到達した時、Headerに"Uuid": "123e4567-e89b-12d3-a456-426614174000"
が追加されています。
|
|
ログから、リクエストとレスポンスの詳細が表示されていて、Headerだけではなく、Bodyも確認できています。
|
|
まとめ
Kongのpre-functionとfile-logプラグインを組み合わせることで、外部サービスを呼ばずともAPIリクエスト内容の加工と可視化が実現できます。
Kongは単なるゲートウェイ以上に、「軽量なエッジ処理エンジン」として活用できます。Luaスクリプトをうまく使えば、REST APIの前処理をスマートに自動化できますよ!