Docs
ドキュメントを検索...⌘K

Amazon CloudFront

Amazon CloudFront はアクセスログを Amazon Data Firehose ストリームに配信でき、Firehose はそれらを HTTPS 経由で Ahrefs に転送できます。ストリームの作成とログ配信の有効化は、ご自身の AWS アカウントで AWS コンソールから行います。Ahrefs がアクセスする必要はありません。

前提条件

  • Ahrefs のプロジェクトのドメインを配信している CloudFront ディストリビューション。
  • その AWS アカウントで Firehose ストリーム、S3 バケット、IAM ロールを作成し、ディストリビューションのログ設定を編集するための権限。
  • Firehose ストリームは 米国東部(バージニア北部) us-east-1 リージョンで作成する必要があります。 CloudFront は、オリジンがどのリージョンにあっても、スタンダードログをそのリージョンの Firehose ストリームにのみ配信します。

ステップ 1 — エンドポイント URL とアクセスキーを取得する

  1. Ahrefs で、対象プロジェクトの プロジェクト設定 → ボット解析 を開きます。
  2. Amazon CloudFront を選択します。
  3. ページに表示されている HTTP エンドポイント URL と アクセスキー をコピーします。アクセスキーはプロジェクトを識別するものなので、パスワード同様に扱ってください。

エンドポイント URL は全ユーザー共通です:

https://analytics.ahrefs.com/api/aws_firehose/logs

ステップ 2 — Firehose ストリームを作成する

AWS コンソールで 米国東部(バージニア北部) リージョンに切り替え、Amazon Data Firehose を開いて Firehose ストリームを作成 をクリックします。

ソースと送信先を選択する

ソース を 直接 PUT に、送信先 を HTTP エンドポイント に設定し、ストリーム名(例:ahrefs-bot-analytics)を付けます。ストリーム作成後は、ソースと送信先を変更できません。レコードの変換 セクションはそのままにします。

Firehose ストリームの作成:ソースは直接 PUT、送信先は HTTP エンドポイント、ストリーム名は ahrefs-bot-analytics

送信先設定

  • HTTP エンドポイント名:Ahrefs ボット解析
  • HTTP エンドポイント URL:ステップ 1 の URL
  • 認証:アクセスキーを使用 を選択し、アクセスキー にステップ 1 のアクセスキーを貼り付けます。
  • コンテンツのエンコーディング:GZIP
  • 再試行期間:300 秒
  • パラメータ:空のままにします。
  • バッファヒント:デフォルトのままにします。
Firehose の送信先設定:Ahrefs のエンドポイント URL、アクセスキー認証、GZIP コンテンツのエンコーディング、リトライ 300 秒

warning

アクセスキーだけが、ストリームを Ahrefs のプロジェクトにひも付ける唯一の情報です。 Ahrefs の各プロジェクトには、それぞれ専用のアクセスキーを持つ専用の Firehose ストリームが必要です。同じプロジェクトを配信する複数のディストリビューションは、1 つのストリームを共有できます。

バックアップ設定

Amazon S3 でのソースレコードバックアップ で 失敗したデータのみ を選択し、参照 で既存の S3 バケットを選ぶか、作成 で新規作成します。 Firehose は、Ahrefs が受け付けられなかったバッチを理由とともにここへ書き込みます。トラブルシューティング時は、このバケットが最初に確認すべき場所です。

Firehose のバックアップ設定:失敗したデータのみ、S3 バックアップバケット

高度な設定

アドバンスド設定 を展開し、Amazon CloudWatch エラーログ記録 を 有効 に設定します。さらに アクセス許可 で、コンソールに 新しい IAM ロールを作成 させます。 Firehose ストリームを作成 をクリックし、ストリームのステータスが アクティブ になるまで待ちます。

ステップ 3 — CloudFront のログをストリームに送信する

  1. CloudFront コンソールで ディストリビューション を開き、対象のディストリビューションを選択します。
  2. ログ タブの スタンダードログの送信先 で、追加 をクリックします。
  3. アクセスログの送信先を追加 ページで、配信先 を Amazon Kinesis Data Firehose に設定し、送信先ストリーム で作成したストリームを選びます。
  4. 追加設定 を展開します:
    • フィールドの選択: ログフィールド に記載されているフィールドを選択します。 33個すべてのフィールドを選択したままでも問題ありません。
    • 出力形式: JSON。他の形式は受け付けられません。
  5. 送信 をクリックします。 CloudFront は数分以内にログ設定の変更を適用します。
CloudFront:アクセスログの送信先を追加し、Amazon Kinesis Data Firehose に配信、ストリームを選択、フィールド選択と JSON 出力形式

ログフィールド

Ahrefs には、タイムスタンプ、c-ip、x-host-header、cs-uri-stem、cs(User-Agent) が必要です。推奨される選択内容は次のとおりです。

timestamp(ms) date time c-ip x-forwarded-for cs-method x-host-header cs-protocol
cs-protocol-version cs-uri-stem cs-uri-query cs(User-Agent) cs(Referer) sc-status sc-bytes
sc-content-type time-to-first-byte time-taken x-edge-result-type x-edge-request-id
x-edge-location c-country asn

timestamp(ms)、c-country、asn は、フィールドピッカーのリアルタイムのサブセットに含まれています。これらは任意です。timestamp(ms) がない場合、Ahrefs は 1 秒精度で date と time を使用します。

ステップ 4 — 検証

CloudFront はスタンダードログをバッチで配信します。通常はリクエストから 1 時間以内で、ログを有効化してから約 4 時間後には確実に配信されます。その後 Firehose が、バッファ間隔内に各バッチを転送します。

  • Firehose コンソールでは、CloudFront が配信を開始するとストリームの モニタリング タブに IncomingRecords が表示され、Ahrefs がバッチを受け付けると DeliveryToHttpEndpoint.Success が表示されます。
  • Ahrefs では、ボットがサイトを訪問すると「ボット解析」レポートにデータが反映されていきます。

トラブルシューティング

配信に失敗した場合、Firehose はリトライ期間の間再試行し、その後、Ahrefs から返されたエラーメッセージとともにバッチを http-endpoint-failed/ プレフィックス配下のバックアップバケットに書き込みます。同じメッセージが、ストリームの 送信先エラーログ タブにも表示されます。

エラーメッセージ原因
missing authentication headerFirehose の送信先にあるアクセスキーのフィールドが空です。
invalid authenticationアクセスキーが Ahrefs のプロジェクトと一致しません。ステップ 1 からもう一度コピーしてください。
records are not JSON: configure CloudFront standard logging (v2) with output format JSON配信の出力形式が JSON ではないか、ストリームが CloudFront のリアルタイムログを受信しています。サポートされているのは、JSON のスタンダードログのみです。
回答 … 「content-type: application/json」ヘッダーを含める必要があります … 404エンドポイント URL のスペルが誤っています。ステップ 1 の URL と比較してください。

無効化

  1. CloudFront コンソールでディストリビューションの ログ記録 タブを開き、Firehose の送信先を選択して削除します。これでログの配信が停止します。
  2. Firehose ストリームを削除し、不要であればバックアップバケットも削除します。
  3. Ahrefs で、プロジェクト設定 → ボット解析 から Amazon CloudFront を無効にします。

送信先を削除しても、ディストリビューションの配信ソースは CloudWatch Logs に残ります。これは問題なく、ログを再度有効にすると再利用されます。

info

CloudFront の リアルタイムログ(Kinesis Data Streams 経由で配信)はサポートされていません。上記の説明どおり、JSON 出力のスタンダードログ(v2)を使用してください。