DataScript は、データ プレーン トラフィックによってさまざまなイベントがトリガされると実行されます。1 つのルールが、異なるイベント中に異なるコードを実行する場合があります。

多くの DataScript 関数は、特定のイベント内でのみ使用できます。たとえば、avi.http.redirect は HTTP 要求イベント内でのみ使用できますが、avi.http.response 関数は HTTP 要求または HTTP 応答イベント内で使用できます。

avi.http.method などの DataScript 関数は、返されるデータが特にクライアントの HTTP 要求から取得されている場合でも、要求イベントまたは応答イベントで使用できます。一部の DataScript 関数にはコンテキスト パラメータが含まれている場合があります。つまり、任意のイベント中に呼び出されている関数が、明示的なイベントからデータを取得している場合があります。関数のコンテキスト パラメータに使用できる値は、関連するナレッジベースの記事に記載されています。

例として、avi.http.get_header を考えます。HTTP 応答イベント中にこれを実装すると、サーバの応答からヘッダーが返されます。ただし、コンテキスト パラメータ セットを avi.HTTP_REQUEST に追加することで、応答イベント中に、クライアント要求のヘッダーが取得および評価される場合があります。

if avi.http.get_header("my_header", avi.HTTP_REQUEST) then
 avi.http.close_conn()
end

上記の DataScript は HTTP の要求イベントまたは応答イベントのいずれかに適用できますが、オプションのコンテキスト パラメータにより、クライアントの要求からヘッダーを明示的に検査します。

サポートされている DataScript イベント

イベント

説明

HTTP_AUTH

このイベントは、クライアント認証の前にトリガされます

HTTP_POST_AUTH

このイベントは、クライアント認証の後にトリガされます

HTTP_REQ

このイベントは、HTTP 要求のすべてのヘッダーが正常に解析された場合に、潜在的な POST 本文が受信される前にトリガされます。

HTTP_RESP

このイベントは、HTTP 応答のすべてのヘッダーが正常に解析された場合に、応答本文が受信される前にトリガされます。

RESP_FAILED

  • サーバから有効な応答ヘッダーを受信してクライアントに転送する前に、エラー/タイムアウトが発生するとトリガされます。RESP_FAILED イベントから呼び出すことができる HTTP 関数は、次の 3 つのみです。

  • avi.http.response()

  • avi.http.redirect()

  • avi.http.internal_status()

他のすべての HTTP 関数は ERROR を返し、クライアント接続は途中で終了します。

RESP_FAILED イベントが発生する例は次のとおりです。

  • バックエンド サーバへの TCP/SSL 接続/ハンドシェイクが失敗する

  • 要求プロキシ/バックエンド サーバへの送信がタイムアウトする

  • サーバからの応答がない、応答ヘッダーが部分的である、または応答ヘッダーが不正である

  • NSX Advanced Load Balancer がバックエンド サーバの応答を待機している間、サーバが接続をリセットする

L4_REQUEST

SSL ハンドシェイク後にクライアントからペイロードを受信したら、DataScript を実行します。

L4_RESPONSE

サーバからパケットの DataScript 受信を実行します。

SSL_HANDSHAKE_DONE

SSL ハンドシェイクが完了したら、DataScript を実行します。

SSL ハンドシェイクを制御し、SSL プロファイル、証明書、PKI 設定、再ネゴシエーションなどの属性を変更するための読み取り/書き込みパラメータに SSL ハンドシェイク レベルのイベントを追加するために、次のイベントが導入されました。

イベント

説明

SSL_PRE_CONNECT

このイベントは、TLS ハンドシェイクの開始時にトリガされます。このイベントは、クライアント IP アドレスまたは VS サービス ポートなどに基づいて SSL プロファイル、SSL キーと証明書、PKI プロファイルなどの SSL 設定を変更するために使用できます。

SSL_Client_Hello

このイベントは、クライアントの Hello の事前処理が完了した後にトリガされます。このイベントは、クライアント IP アドレスまたは VS サービス ポートなどに基づいて SSL プロファイル、SSL キーと証明書、PKI プロファイルなどの SSL 設定を変更するために使用されます。

SSL_HANDSHAKE_DONE

このイベントは、TLS ハンドシェイクが完了した後にトリガされます。このイベントは、クライアント証明書認証エラーの取得とログ作成に使用できます。

注: