tldr
勉強がてらにEnvoyのドキュメントを邦訳してみました。ベースはGoogle Translateで、ところどころ不自然な箇所を直しています。
原文としたのEnvoyのドキュメントはこちらのディレクトリ以下にあります(ライセンス:Apache License 2.0, NOTICE)。
HTTP フィルタ
ネットワークレベルのフィルタスタックと同様に、Envoy はコネクションマネージャ内で HTTP レベルのフィルタスタックをサポートしています。基礎となる物理プロトコル(HTTP/1.1、HTTP/2など)や多重化機能に関する知識がなくても、HTTP レベルのメッセージを処理するフィルタを作成できます。 HTTP レベルフィルタには3つの種類があります。
- デコーダ
コネクションマネージャがリクエストストリームの一部(ヘッダ、ボディ、およびトレーラ)をデコードしているときに、デコーダフィルタが呼び出されます。 - エンコーダ
接続マネージャが応答ストリームの一部(ヘッダ、ボディ、およびトレーラ)をエンコードしようとしているときに、エンコーダフィルタが呼び出されます。 - Decoder/Encoder
Decoder/Encoder フィルタは、コネクションマネージャがリクエストストリームの一部をデコードしているときと、コネクションマネージャがレスポンスストリームの一部をエンコードしようとしているときの両方で呼び出されます。
HTTP レベルフィルタ用のAPIを使用すると、基礎となるプロトコルに関する知識がなくてもフィルタを操作できます。ネットワークレベルのフィルタと同様に、HTTP フィルタは停止して後続のフィルタへの繰り返しを継続できます。これにより、ヘルスチェック処理、レート制限サービスの呼び出し、バッファリング、ルーティング、DynamoDB などのアプリケーショントラフィックの統計情報の生成など、より複雑なシナリオが可能になります。HTTP レベルフィルタは、コンテキスト内で状態(静的および動的)を共有できます。単一の要求ストリーム詳細については、フィルタ間のデータ共有を参照してください。 Envoy には、このアーキテクチャーの概要および構成の参照で文書化されているいくつかの HTTP レベルのフィルターが既に含まれています。