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 |
他のすべての HTTP 関数は ERROR を返し、クライアント接続は途中で終了します。 RESP_FAILED イベントが発生する例は次のとおりです。
|
L4_REQUEST |
SSL ハンドシェイク後にクライアントからペイロードを受信したら、DataScript を実行します。 |
L4_RESPONSE |
サーバからパケットの DataScript 受信を実行します。 |
SSL_HANDSHAKE_DONE |
SSL ハンドシェイクが完了したら、DataScript を実行します。 |
イベント |
説明 |
---|---|
SSL_PRE_CONNECT |
このイベントは、TLS ハンドシェイクの開始時にトリガされます。このイベントは、クライアント IP アドレスまたは VS サービス ポートなどに基づいて SSL プロファイル、SSL キーと証明書、PKI プロファイルなどの SSL 設定を変更するために使用できます。 |
SSL_Client_Hello |
このイベントは、クライアントの Hello の事前処理が完了した後にトリガされます。このイベントは、クライアント IP アドレスまたは VS サービス ポートなどに基づいて SSL プロファイル、SSL キーと証明書、PKI プロファイルなどの SSL 設定を変更するために使用されます。 |
SSL_HANDSHAKE_DONE |
このイベントは、TLS ハンドシェイクが完了した後にトリガされます。このイベントは、クライアント証明書認証エラーの取得とログ作成に使用できます。 |
イベントの実装順序については、「DataScript の実行の優先順位」を参照してください。
L4 SSL DataScript の詳細については、「レイヤー 4 DataScript」を参照してください。