Cloudflare R2の有効化
Cloudflare Logpushは、CloudflareダッシュボードまたはAPIを介して直接R2にログをプッシュすることをサポートしています。
R2に関する詳細は、Cloudflare R2のドキュメントを参照してください。
始める前に:
-
R2バケットを作成し、R2 APIトークンを設定します。
-
R2 UIに移動 > バケットを作成。
-
R2 APIトークンを管理を選択します。
-
APIトークンを作成を選択します。
-
権限の下で、トークンの編集権限を選択します。
-
シークレットアクセスキーとアクセスキーIDをコピーします。これらはLogpushジョブを設定する際に必要です。
-
-
次の権限を持っていることを確認してください:
- R2書き込み、Logshare編集。
-
Log in to the Cloudflare dashboard ↗.
-
Select the Enterprise account or domain (also known as zone) you want to use with Logpush. Depending on your choice, you have access to account-scoped datasets and zone-scoped datasets, respectively.
-
Go to Analytics & Logs > Logpush.
-
Select Create a Logpush job.
-
宛先を選択で、R2オブジェクトストレージを選択します。
-
次の宛先の詳細を入力または選択します:
- バケット - R2バケット名
- パス - バケットの場所、例えば、
cloudflare-logs/http_requests/example.com - ログを日次のサブフォルダに整理する(推奨)
- 認証の下に、R2アクセスキーIDとR2シークレットアクセスキーを追加します。詳細については、R2 APIトークンの管理 ↗を参照してください。
宛先の詳細を入力し終えたら、続行を選択します。
-
ストレージサービスにプッシュするデータセットを選択します。
-
次のステップでは、Logpushジョブを構成する必要があります:
- ジョブ名を入力します。
- ログが一致する場合の下で、ログに含めるイベントや除外するイベントを選択できます。詳細については、フィルターを参照してください。すべてのデータセットにこのオプションが利用できるわけではありません。
- 次のフィールドを送信で、すべてのログをストレージ宛先にプッシュするか、プッシュしたいログを選択的に選ぶことができます。
-
詳細オプションでは、次のことができます:
- ログ内のタイムスタンプフィールドの形式を選択します(
RFC3339(デフォルト)、Unix、またはUnixNano)。 - ログのサンプリングレートを選択するか、ランダムにサンプリングされたログのパーセンテージをプッシュします。
CVE-2021-44228のためのレダクションを有効にします。このオプションは、${のすべての出現をx{に置き換えます。
- ログ内のタイムスタンプフィールドの形式を選択します(
-
Logpushジョブの構成が完了したら、送信を選択します。
ジョブを作成するには、次のフィールドを持つPOSTリクエストをLogpushジョブエンドポイントに送信します:
- name(オプション) - ドメイン名をジョブ名として使用します。
- destination_conf - バケットパス、アカウントID、R2アクセスキーID、R2シークレットアクセスキーからなるログ宛先。
r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>- dataset - 受信したいログのカテゴリ。サポートされているデータセットの完全なリストについては、ログフィールドを参照してください。
- output_options(オプション) - フィールド、サンプリングレート、タイムスタンプ形式を構成するには、API構成オプションを参照してください。
cURLを使用した例のリクエスト:
curl -X POST 'https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logpush/jobs' \-H 'X-Auth-Key: <API_KEY>' \-H 'X-Auth-Email: <EMAIL>' \-H 'Content-Type: application/json' \-d '{"name": "<DOMAIN_NAME>","output_options": { "field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"], "timestamp_format": "rfc3339"},"destination_conf": "r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>","dataset": "http_requests","enabled": true}'| jq .