Docs
Cari dokumen...⌘K

Amazon CloudFront

Amazon CloudFront dapat mengirimkan log aksesnya ke stream Amazon Data Firehose, dan Firehose dapat meneruskannya ke Ahrefs melalui HTTPS. Anda membuat stream dan mengaktifkan pengiriman log di akun AWS Anda sendiri melalui konsol AWS; Ahrefs tidak pernah memerlukan akses ke akun tersebut.

Prasyarat

  • Distribusi CloudFront yang melayani domain proyek Ahrefs Anda.
  • Izin di akun AWS tersebut untuk membuat stream Firehose, bucket S3, dan peran IAM, serta untuk mengedit pengaturan pencatatan log distribusi.
  • Stream Firehose harus dibuat di wilayah US East (N. Virginia) us-east-1. CloudFront hanya mengirimkan log standard ke stream Firehose di wilayah tersebut, di wilayah mana pun origin Anda berada.

Langkah 1 — Dapatkan URL titik akhir dan kunci akses Anda

  1. Di Ahrefs, buka Pengaturan Proyek → Bot Analytics untuk proyek Anda.
  2. Pilih Amazon CloudFront.
  3. Salin URL titik akhir HTTP dan kunci akses yang ditampilkan di halaman. Kunci akses mengidentifikasi proyek Anda; perlakukan seperti kata sandi.

URL titik akhir sama untuk semua orang:

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

Langkah 2 — Buat stream Firehose

Di konsol AWS, beralihlah ke wilayah US East (N. Virginia), buka Amazon Data Firehose lalu klik Buat stream Firehose.

Pilih sumber dan tujuan

Setel Sumber ke Direct PUT dan Tujuan ke Titik akhir HTTP, lalu beri nama stream, misalnya ahrefs-bot-analytics. Sumber dan tujuan tidak dapat diubah setelah stream dibuat. Biarkan bagian Transformasikan rekaman apa adanya.

Buat stream Firehose: sumber Direct PUT, tujuan titik akhir HTTP, nama stream ahrefs-bot-analytics

Pengaturan tujuan

  • Nama titik akhir HTTP: Ahrefs Bot Analytics
  • URL titik akhir HTTP: URL dari Langkah 1
  • Autentikasi: Gunakan kunci akses, lalu tempelkan kunci akses dari Langkah 1 ke Kunci akses
  • Pengodean konten: GZIP
  • Durasi percobaan ulang: 300 detik
  • Parameter: biarkan kosong
  • Petunjuk buffer: pertahankan nilai bawaan
Pengaturan tujuan Firehose: URL titik akhir Ahrefs, autentikasi kunci akses, pengodean konten GZIP, percobaan ulang 300 detik

warning

Kunci akses adalah satu-satunya hal yang menghubungkan stream dengan proyek Ahrefs Anda. Setiap proyek Ahrefs memerlukan stream Firehose sendiri dengan kunci aksesnya sendiri; beberapa distribusi yang melayani proyek yang sama dapat berbagi satu stream.

Pengaturan cadangan

Di bawah Pencadangan rekaman sumber di Amazon S3, pilih Hanya data yang gagal, lalu Telusuri ke bucket S3 yang sudah ada atau Buat yang baru. Firehose menuliskan setiap batch yang tidak dapat diterima Ahrefs ke sana, beserta alasannya, sehingga bucket ini adalah tempat pertama yang perlu diperiksa saat memecahkan masalah.

Pengaturan cadangan Firehose: hanya data yang gagal, bucket cadangan S3

Pengaturan lanjutan

Perluas Pengaturan Advanced, setel Pencatatan kesalahan Amazon CloudWatch ke Diaktifkan, lalu di bawah Izin biarkan konsol membuat peran IAM baru. Klik Buat stream Firehose dan tunggu sampai status stream menjadi Aktif.

Langkah 3 — Kirim log CloudFront ke stream

  1. Di konsol CloudFront, buka Distribusi dan pilih distribusi Anda.
  2. Di tab Pencatatan log, di bawah Tujuan log standard, klik Tambah.
  3. Di halaman Tambahkan tujuan log akses, setel Kirimkan ke ke Amazon Kinesis Data Firehose dan pilih stream Anda di bawah Stream tujuan.
  4. Perluas Pengaturan tambahan:
    • Pemilihan bidang: pilih bidang yang tercantum di Bidang log. Membiarkan semua 33 bidang tetap terpilih juga bisa.
    • Format output: JSON. Format lain tidak diterima.
  5. Klik Kirim. CloudFront menerapkan perubahan pencatatan log dalam beberapa menit.
CloudFront: tambahkan tujuan log akses, kirimkan ke Amazon Kinesis Data Firehose, stream dipilih, pemilihan bidang, dan format output JSON

Bidang log

Ahrefs memerlukan stempel waktu, c-ip, x-host-header, cs-uri-stem, dan cs(User-Agent). Pilihan yang direkomendasikan adalah:

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, dan asn ada dalam subset real-time pada pemilih bidang. Bidang tersebut opsional: tanpa timestamp(ms) Ahrefs menggunakan date dan time, dengan presisi satu detik.

Langkah 4 — Verifikasi

CloudFront mengirimkan log standard secara batch, biasanya dalam satu jam setelah permintaan dan secara andal sekitar empat jam setelah Anda mengaktifkan pencatatan log. Firehose kemudian meneruskan setiap batch dalam interval buffer-nya.

  • Di konsol Firehose, tab Pemantauan pada stream menampilkan IncomingRecords setelah CloudFront mulai mengirimkan, dan DeliveryToHttpEndpoint.Success setelah Ahrefs menerima batch tersebut.
  • Di Ahrefs, laporan Bot Analytics akan terisi seiring bot mengunjungi situs Anda.

Pemecahan masalah

Jika pengiriman gagal, Firehose akan mencoba ulang selama durasi percobaan ulang, lalu menulis batch ke bucket cadangan Anda di bawah awalan http-endpoint-failed/, beserta pesan error yang dikembalikan oleh Ahrefs. Pesan yang sama muncul di tab Log kesalahan tujuan pada stream.

Pesan errorPenyebab
missing authentication headerKolom kunci akses pada tujuan Firehose kosong.
invalid authenticationKunci akses tidak cocok dengan proyek Ahrefs. Salin lagi dari Langkah 1.
records are not JSON: configure CloudFront standard logging (v2) with output format JSONFormat output pengiriman bukan JSON, atau stream menerima log real-time CloudFront. Hanya log standard dalam JSON yang didukung.
Respons … harus berisi header “content-type: application/json” … 404URL titik akhir salah ketik. Bandingkan dengan URL pada Langkah 1.

Menonaktifkan

  1. Di konsol CloudFront, pada tab Pencatatan log distribusi, pilih tujuan Firehose lalu hapus. Ini akan menghentikan pengiriman log.
  2. Hapus stream Firehose, dan bucket cadangan jika Anda tidak lagi memerlukannya.
  3. Di Ahrefs, nonaktifkan Amazon CloudFront di Pengaturan Proyek → Bot Analytics.

Menghapus tujuan akan mempertahankan sumber pengiriman distribusi di CloudWatch Logs. Hal ini tidak berbahaya dan akan digunakan kembali jika Anda mengaktifkan pencatatan log lagi.

info

CloudFront log real-time (dikirim melalui Kinesis Data Streams) tidak didukung. Gunakan pencatatan log standard (v2) dengan output JSON seperti yang dijelaskan di atas.