Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Tail ハンドラー

最終更新 Markdown で表示Agent セットアップ

背景

tail() ハンドラーは、Tail Worker を書くときに実装するハンドラーです。Tail Worker はログをリアルタイムで処理し、ログサービスや分析サービスへ送れます。

tail() ハンドラーは、接続先のプロデューサー Worker が呼び出されるたびに 1 回実行されます。

Tail Worker の設定は、Tail Workers のドキュメント を参照してください。

構文

export default {
  async tail(events, env, ctx) {
    fetch("<YOUR_ENDPOINT>", {
      method: "POST",
      body: JSON.stringify(events),
    })
  }
}
from workers import WorkerEntrypoint, fetch
import json

class Default(WorkerEntrypoint):
    async def tail(self, events, env, ctx):
        await fetch("<YOUR_ENDPOINT>", method="POST", body=json.dumps(events))

パラメーター

  • events array

    • TailItems の配列です。Worker を起動するイベントごとに 1 つの TailItem が収集されます。dynamic dispatch Worker に Tail Worker を入れた Workers for Platforms のお客様では、events に 2 つの要素が含まれます。1 つは dynamic dispatch Worker、もう 1 つは User Worker です。
  • env object

    • ES modules 形式 の Worker に関連付けられたバインディングを含むオブジェクトです。KV 名前空間や Durable Objects などがあります。
  • ctx object

    • ES modules 形式 の Worker に関連付けられたコンテキストを含むオブジェクトです。現在、このオブジェクトには waitUntil 関数だけが含まれます。

プロパティ

  • event.type string

    • イベントの種類です。常に "tail" を返します。
  • event.traces array

    • TailItems の配列です。Worker を起動するイベントごとに 1 つの TailItem が収集されます。dynamic dispatch Worker に Tail Worker を入れた Workers for Platforms のお客様では、events に 2 つの要素が含まれます。1 つは dynamic dispatch Worker、もう 1 つは user Worker です。
  • event.waitUntil(promisePromise) : void

    • waitUntil を参照してください。fetch イベントハンドラーと異なり、tail ハンドラーは値を返さないため、Tail Worker が非同期処理を行う唯一の方法です。

TailItems

プロパティ

  • scriptName string

    • プロデューサースクリプトの名前です。
  • event object

    • Worker を起動したイベントに関する情報を含みます。
  • eventTimestamp number

    • エポック時間で計測されます。
  • logs array

  • exceptions array

    • TailExceptions の配列です。Worker は複数の非同期タスクを登録できるため、1 回の Worker 呼び出しで未処理例外が複数出ることがあります。
  • outcome string

    • Worker 呼び出しの結果です。次のいずれかです。
      • unknown: outcome ステータスが設定されませんでした。
      • ok: Worker の呼び出しが成功しました。
      • exception: 未処理例外がスローされました。次のような理由で起きることがあります。
        • キャッチされなかった JavaScript 例外。
        • Response を返さない fetch ハンドラー。
        • 内部エラー。
      • exceededCpu: Worker の呼び出しが CPU 制限を超えました。
      • exceededMemory: Worker の呼び出しがメモリ制限を超えました。
      • scriptNotFound: Worker スクリプトの取得に失敗した内部エラーです。
      • canceled: 完了前に Worker の呼び出しがキャンセルされました。レスポンス送信前にクライアントが切断したことがよくあります。
      • responseStreamDisconnected: deferred proxying 中にレスポンスストリームが切断されました。クライアントまたはサーバーが早く切断したときに起きます。

FetchEventInfo

プロパティ

TailRequest

プロパティ

  • cf object

  • headers object

    • ヘッダー名と値のエントリです(デフォルトではマスキングされます)。ヘッダー名は小文字になり、重複するヘッダー名に紐づく値は Fetch 標準 と同様に ", "(カンマとスペース)で連結されます。
  • method string

    • HTTP リクエストメソッドです。
  • url string

    • HTTP リクエスト URL です(デフォルトではマスキングされます)。

メソッド

  • getUnredacted() object

    • マスキングされていないプロパティを持つ TailRequest オブジェクトを返します。

TailRequest の一部プロパティは、ユーザー認証情報や API トークンなどの機密情報を誤って記録しにくくするため、デフォルトでマスキングされます。マスキングはヒューリスティックな規則を使うため、誤検出や見逃しがあります。クライアントは getUnredacted() を呼び出してマスキングを回避できますが、マスキングの有無にかかわらず、保持する情報には常に注意してください。

  • ヘッダーのマスキング: ヘッダー名(大文字小文字を区別しない)が cookie / set-cookie であるか、部分文字列 "auth""key""secret""token""jwt" を含む場合、ヘッダー値は文字列 “REDACTED” になります。
  • URL のマスキング: URL 内で貪欲に一致した ID 文字(a-z、A-Z、0-9、'+'、'-'、'_')の部分文字列が、次の hex または base-64 ID の条件を満たす場合、その部分文字列は文字列 “REDACTED” に置き換えられます。
  • Hex ID: 16 進数字が 32 個以上あり、16 進数字と区切り文字('+'、'-'、'_')だけを含む
  • Base-64 ID: 21 文字以上あり、大文字が 2 つ以上、小文字が 2 つ以上、数字が 2 つ以上含まれる

TailResponse

プロパティ

  • status number

    • HTTP ステータスコードです。

TailLog

console 関数に送られた情報を記録します。

プロパティ

  • timestamp number

    • エポック時間で計測されます。
  • level string

    • 呼び出された console 関数を示す文字列です。次のいずれかです: debuginfologwarnerror
  • message object

    • console 関数に渡されたパラメーターの配列です。

TailException

Worker 呼び出し中に発生した未処理例外を記録します。

プロパティ

  • timestamp number

    • エポック時間で計測されます。
  • name string

    • エラータイプです(例: ErrorTypeError など)。
  • message object

    • エラーの説明です(例: "x" is not a function)。

関連リソース

  • Tail Workers - Tail Worker を設定し、ほかの Worker の実行情報を受け取ります。

役に立ちましたか?