テールハンドラー
tail() ハンドラーは、テールワーカーを書く際に実装するハンドラーです。テールワーカーは、リアルタイムでログを処理し、それをログまたは分析サービスに送信するために使用できます。
tail() ハンドラーは、接続されたプロデューサーワーカーが呼び出されるたびに1回呼び出されます。
テールワーカーを構成するには、テールワーカーのドキュメントを参照してください。
export default { async tail(events, env, ctx) { fetch("<YOUR_ENDPOINT>", { method: "POST", body: JSON.stringify(events), }) }}-
events配列TailItemsの配列。ワーカーをトリガーする各イベントに対して1つのTailItemが収集されます。ダイナミックディスパッチワーカーにテールワーカーがインストールされているプラットフォーム顧客向けのワーカーの場合、eventsには2つの要素が含まれます:1つはダイナミックディスパッチワーカー用、もう1つはユーザーワーカー用です。
-
envオブジェクト- KV名前空間やダービルオブジェクトなど、ESモジュール形式を使用してワーカーに関連付けられたバインディングを含むオブジェクト。
-
ctxオブジェクト- ESモジュール形式を使用してワーカーに関連付けられたコンテキストを含むオブジェクト。現在、このオブジェクトには
waitUntil関数のみが含まれています。
- ESモジュール形式を使用してワーカーに関連付けられたコンテキストを含むオブジェクト。現在、このオブジェクトには
-
event.type文字列- イベントのタイプ。これは常に
"tail"を返します。
- イベントのタイプ。これは常に
-
event.traces配列TailItemsの配列。ワーカーをトリガーする各イベントに対して1つのTailItemが収集されます。ダイナミックディスパッチワーカーにテールワーカーがインストールされているプラットフォーム顧客向けのワーカーの場合、eventsには2つの要素が含まれます:1つはダイナミックディスパッチワーカー用、もう1つはユーザーワーカー用です。
-
event.waitUntil(promisePromise): voidwaitUntilを参照してください。フェッチイベントハンドラーとは異なり、テールハンドラーは値を返さないため、トレースワーカーが非同期作業を行う唯一の方法です。
-
scriptName文字列- プロデューサースクリプトの名前。
-
eventオブジェクト- ワーカーのトリガーイベントに関する情報を含みます。
- フェッチイベントの場合:
FetchEventInfoオブジェクト - その他のイベントタイプの場合:現在は
null。
- フェッチイベントの場合:
- ワーカーのトリガーイベントに関する情報を含みます。
-
eventTimestamp数値- エポック時間で測定されます。
-
logs配列- TailLogsの配列。
-
exceptions配列TailExceptionsの配列。単一のワーカー呼び出しは、ワーカーが複数の非同期タスクを登録できるため、複数の未処理の例外を引き起こす可能性があります。
-
outcome文字列- ワーカー呼び出しの結果、次のいずれか:
unknown: 結果ステータスが設定されていません。ok: ワーカー呼び出しが成功しました。exception: 未処理の例外がスローされました。これは、次のような多くの理由で発生する可能性があります:- 捕捉されていないJavaScript例外。
- レスポンスを生成しないフェッチハンドラー。
- 内部エラー。
exceededCpu: ワーカー呼び出しがCPU制限を超えました。exceededMemory: ワーカー呼び出しがメモリ制限を超えました。scriptNotFound: ワーカースクリプトの取得に関する内部エラー。canceled: ワーカー呼び出しが完了する前にキャンセルされました。一般的には、クライアントがレスポンスを送信する前に切断されたためです。
- ワーカー呼び出しの結果、次のいずれか:
-
requestオブジェクト -
responseオブジェクト
-
cfオブジェクトIncomingRequestCfPropertiesからのデータを含みます。
-
headersオブジェクト- ヘッダー名/値のエントリ(デフォルトでレダクションされます)。ヘッダー名は小文字にされ、重複するヘッダー名に関連付けられた値は連結され、文字列
", "(カンマスペース)が挿入されます。これは、Fetch標準 ↗に類似しています。
- ヘッダー名/値のエントリ(デフォルトでレダクションされます)。ヘッダー名は小文字にされ、重複するヘッダー名に関連付けられた値は連結され、文字列
-
method文字列- HTTPリクエストメソッド。
-
url文字列- HTTPリクエストURL(デフォルトでレダクションされます)。
-
getUnredacted()オブジェクト- レダクションされていないプロパティを持つTailRequestオブジェクトを返します。
TailRequest の一部のプロパティは、ユーザーの資格情報やAPIトークンなどの機密情報を誤って記録しにくくするためにデフォルトでレダクションされています。レダクションはヒューリスティックルールを使用しているため、誤検知や見逃しが発生する可能性があります。クライアントは getUnredacted() を呼び出してレダクションをバイパスできますが、レダクションを使用するかどうかにかかわらず、保持される情報に注意する必要があります。
- ヘッダーのレダクション:ヘッダー名が
cookie/set-cookieであるか、または"auth"、"key"、"secret"、"token"、または"jwt"を含む場合、ヘッダー値は文字列“REDACTED”になります。 - URLのレダクション:URL内のID文字(a-z、A-Z、0-9、’+’, ’-’, ’_‘)の貪欲に一致する部分文字列について、次の基準を満たす場合、その部分文字列は文字列
“REDACTED”に置き換えられます。 - ヘックスID:32桁以上の16進数の数字を含み、16進数の数字と区切り文字(’+’, ’-’, ’_’) のみを含む。
- ベース64 ID:21文字以上を含み、少なくとも2つの大文字、2つの小文字、および2つの数字を含む。
-
status数値- HTTPステータスコード。
コンソール関数に送信された情報を記録します。
-
timestamp数値- エポック時間で測定されます。
-
level文字列- 呼び出されたコンソール関数を示す文字列。次のいずれか:
debug、info、log、warn、error。
- 呼び出されたコンソール関数を示す文字列。次のいずれか:
-
messageオブジェクト- コンソール関数に渡されたパラメーターの配列。
ワーカー呼び出し中に発生した未処理の例外を記録します。
-
timestamp数値- エポック時間で測定されます。
-
name文字列- エラータイプ(例:
Error、TypeErrorなど)。
- エラータイプ(例:
-
messageオブジェクト- エラーの説明(例:
"x" is not a function)。
- エラーの説明(例:
- テールワーカー - 他のワーカーの実行に関する情報を受け取るためにテールワーカーを構成します。