Gunakan log waktu nyata - Amazon CloudFront

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan log waktu nyata

Dengan log CloudFront real-time, Anda bisa mendapatkan informasi tentang permintaan yang dibuat ke distribusi secara real time (log dikirimkan dalam hitungan detik setelah menerima permintaan). Anda dapat menggunakan log waktu nyata untuk memantau, menganalisis, dan mengambil tindakan berdasarkan kinerja pengiriman konten.

CloudFront log real-time dapat dikonfigurasi. Anda dapat memilih:

  • laju pengambilan sampel untuk log waktu nyata Anda—yaitu, persentase permintaan yang ingin Anda terima catatan log waktu nyata.

  • Kolom khusus yang ingin Anda terima di catatan log.

  • Perilaku cache tertentu (pola jalur) yang ingin Anda terima log waktu nyata.

CloudFront log real-time dikirimkan ke aliran data pilihan Anda di Amazon Kinesis Data Streams. Anda dapat membangun konsumen aliran data Kinesis Anda sendiri, atau menggunakan Amazon Data Firehose untuk mengirim data log ke Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon Service (Service), atau OpenSearch layanan pemrosesan OpenSearch log pihak ketiga.

CloudFront biaya untuk log real-time, selain biaya yang Anda keluarkan untuk menggunakan Kinesis Data Streams. Untuk informasi selengkapnya tentang harga, lihat CloudFront Harga Amazon dan harga Amazon Kinesis Data Streams.

penting

Kami menyarankan Anda menggunakan log untuk memahami sifat permintaan untuk konten Anda, bukan sebagai akuntansi lengkap dari semua permintaan. CloudFront memberikan log waktu nyata dengan upaya terbaik. Entri log untuk permintaan tertentu mungkin dikirim dalam waktu lama setelah permintaan diproses secara aktual dan, dalam kasus yang jarang, entri log mungkin tidak dikirimkan sama sekali. Ketika entri log dihilangkan dari log waktu nyata, jumlah entri dalam log waktu nyata tidak akan cocok dengan penggunaan yang muncul dalam laporan AWS penagihan dan penggunaan.

Membuat dan menggunakan konfigurasi log real-time

Untuk mendapatkan informasi tentang permintaan yang dibuat untuk distribusi secara real time. Anda dapat menggunakan konfigurasi log real-time. Log dikirimkan dalam hitungan detik setelah menerima permintaan. Anda dapat membuat konfigurasi log real-time di CloudFront konsol, dengan AWS Command Line Interface (AWS CLI), atau dengan CloudFront API.

Untuk menggunakan konfigurasi log real-time, Anda melampirkannya ke satu atau beberapa perilaku cache dalam CloudFront distribusi.

Console
Untuk membuat konfigurasi log real-time
  1. Masuk ke AWS Management Console dan buka halaman Log di CloudFront konsol dihttps://console.aws.amazon.com/cloudfront/v4/home?#/logs.

  2. Pilih tab Konfigurasi waktu nyata.

  3. Pilih Buat konfigurasi.

  4. Untuk Nama, masukkan nama untuk konfigurasi.

  5. Untuk Sampling rate, masukkan persentase permintaan yang ingin Anda terima catatan log.

  6. Untuk Bidang, pilih bidang yang akan diterima di log waktu nyata.

    • Untuk menyertakan semua bidang CMCD untuk log Anda, pilih CMCD semua kunci.

  7. Untuk Endpoint, pilih satu atau beberapa aliran data Kinesis untuk menerima log real-time.

    catatan

    CloudFront log real-time dikirimkan ke aliran data yang Anda tentukan di Kinesis Data Streams. Untuk membaca dan menganalisis log waktu nyata Anda, Anda dapat membangun konsumen aliran data Kinesis Anda sendiri. Anda juga dapat menggunakan Firehose untuk mengirim data log ke Amazon S3, Amazon Redshift, OpenSearch Amazon Service, atau layanan pemrosesan log pihak ketiga.

  8. Untuk peran IAM, pilih Buat peran layanan baru atau pilih peran yang ada. Anda harus memiliki izin untuk membuat peran IAM.

  9. (Opsional) Untuk Distribusi, pilih perilaku CloudFront distribusi dan cache untuk dilampirkan ke konfigurasi log waktu nyata.

  10. Pilih Buat konfigurasi.

Jika berhasil, konsol akan menunjukkan detail konfigurasi log waktu nyata yang baru saja Anda buat.

Untuk informasi selengkapnya, lihat Memahami konfigurasi log waktu nyata.

AWS CLI

Untuk membuat konfigurasi log real-time dengan AWS CLI, gunakan aws cloudfront create-realtime-log-config perintah. Anda dapat menggunakan file input untuk memberikan parameter input perintah, daripada menentukan setiap parameter individu sebagai input baris perintah.

Untuk membuat konfigurasi log waktu nyata (CLI dengan file masukan)
  1. Gunakan perintah berikut untuk membuat file dengan nama rtl-config.yaml yang berisi semua parameter input untuk create-realtime-log-config perintah.

    aws cloudfront create-realtime-log-config --generate-cli-skeleton yaml-input > rtl-config.yaml
  2. Buka file dengan nama rtl-config.yaml yang baru Anda buat. Edit file untuk menentukan pengaturan konfigurasi log waktu nyata yang Anda inginkan, lalu simpan file. Perhatikan hal-hal berikut:

    • Untuk StreamType, satu-satunya nilai valid adalah Kinesis.

    Untuk informasi lebih lanjut tentang pengaturan konfigurasi panjang waktu nyata, lihat Memahami konfigurasi log waktu nyata.

  3. Gunakan perintah berikut untuk membuat konfigurasi log waktu nyata menggunakan parameter input dari rtl-config.yaml file.

    aws cloudfront create-realtime-log-config --cli-input-yaml file://rtl-config.yaml

Jika berhasil, output perintah menunjukkan rincian konfigurasi log real-time yang baru saja Anda buat.

Untuk melampirkan konfigurasi log waktu nyata ke distribusi yang ada (CLI dengan file masukan)
  1. Gunakan perintah berikut untuk menyimpan konfigurasi distribusi untuk CloudFront distribusi yang ingin Anda perbarui. Ganti Distribution_ID dengan ID distribusi.

    aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
  2. Buka file dengan nama dist-config.yaml yang baru Anda buat. Edit file, membuat perubahan berikut pada setiap perilaku cache yang Anda perbarui untuk menggunakan konfigurasi log waktu nyata.

    • Dalam perilaku cache, tambahkan kolom bernama RealtimeLogConfigArn. Untuk nilai bidang, gunakan ARN dari konfigurasi log real-time yang ingin Anda lampirkan ke perilaku cache ini.

    • Ubah nama ETag bidang menjadiIfMatch, tetapi jangan ubah nilai bidang.

    Simpan file setelah selesai.

  3. Gunakan perintah berikut untuk memperbarui distribusi untuk menggunakan konfigurasi log waktu nyata. Ganti Distribution_ID dengan ID distribusi.

    aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml

Jika berhasil, output perintah menunjukkan rincian distribusi yang baru saja Anda perbarui.

API

Untuk membuat konfigurasi log real-time dengan CloudFront API, gunakan operasi CreateRealtimeLogConfigAPI. Untuk informasi selengkapnya tentang parameter yang Anda tentukan dalam panggilan API ini, lihat Memahami konfigurasi log waktu nyata dan dokumentasi referensi API untuk AWS SDK atau klien API lainnya.

Setelah membuat konfigurasi log real-time, Anda dapat melampirkannya ke perilaku cache, dengan menggunakan salah satu operasi API berikut:

  • Untuk melampirkannya ke perilaku cache dalam distribusi yang ada, gunakan UpdateDistribution.

  • Untuk melampirkannya ke perilaku cache dalam distribusi baru, gunakan CreateDistribution.

Untuk kedua operasi API ini, berikan ARN konfigurasi log real-time di RealtimeLogConfigArn lapangan, di dalam perilaku cache. Untuk informasi selengkapnya tentang bidang lain yang Anda tentukan dalam panggilan API ini, lihat Referensi pengaturan distribusi dan dokumentasi referensi API untuk AWS SDK atau klien API lainnya.

Memahami konfigurasi log waktu nyata

Untuk menggunakan log CloudFront real-time, Anda mulai dengan membuat konfigurasi log real-time. Konfigurasi log waktu nyata berisi informasi bidang log mana yang ingin Anda terima, laju pengambilan sampel untuk catatan log, dan aliran data Kinesis tempat Anda ingin mengirimkan log.

Secara khusus, konfigurasi log waktu nyata berisi pengaturan berikut:

Nama

Nama untuk mengidentifikasi konfigurasi log waktu nyata.

Tingkat pengambilan sampel

Laju pengambilan sampel adalah jumlah keseluruhan antara 1 dan 100 (inklusif) yang menentukan persentase permintaan penampil yang dikirim ke Kinesis Data Streams sebagai catatan log waktu nyata. Untuk menyertakan setiap permintaan penampil dalam catatan waktu nyata Anda, tentukan 100 untuk laju pengambilan sampel. Anda dapat memilih tingkat pengambilan sampel yang lebih rendah untuk mengurangi biaya saat masih menerima sampel representatif data permintaan dalam catatan waktu nyata Anda.

Bidang

Daftar kolom yang disertakan dalam setiap catatan log waktu nyata. Setiap catatan log dapat berisi hingga 40 kolom, dan Anda dapat memilih untuk menerima semua bidang yang tersedia, atau hanya kolom yang Anda butuhkan untuk memantau dan menganalisis kinerja.

Daftar berikut berisi setiap nama bidang dan deskripsi informasi dalam bidang tersebut. Kolom tercantum dalam urutan tampilannya dalam catatan log yang dikirim ke Stream Data Kinesis.

Fields 46-63 adalah data klien media umum (CMCD) yang dapat dikirim klien media player ke CDN dengan setiap permintaan. Anda dapat menggunakan data ini untuk memahami setiap permintaan, seperti jenis media (audio, video), kecepatan pemutaran, dan panjang streaming. Bidang ini hanya akan muncul di log waktu nyata Anda jika dikirimkan ke CloudFront.

  1. timestamp

    Tanggal dan waktu server edge selesai menanggapi permintaan.

  2. c-ip

    Alamat IP penampil yang membuat permintaan, misalnya, 192.0.2.183 atau 2001:0db8:85a3::8a2e:0370:7334. Jika penampil menggunakan proksi HTTP atau penyeimbang beban untuk mengirim permintaan, nilai bidang ini adalah alamat IP dari perantara atau penyeimbang beban. Lihat juga x-forwarded-for bidang.

  3. time-to-first-byte

    Jumlah detik antara menerima permintaan dan menulis byte pertama respons, sebagaimana diukur pada server.

  4. sc-status

    Kode status HTTP dari respon server (misalnya,200).

  5. sc-bytes

    Jumlah total byte yang dikirim server ke penampil sebagai respons terhadap permintaan, termasuk header. Untuk WebSocket koneksi, ini adalah jumlah total byte yang dikirim dari server ke klien melalui koneksi.

  6. cs-method

    Metode permintaan HTTP yang diterima dari penampil.

  7. cs-protocol

    Protokol permintaan penampil (http, https, ws, atau wss).

  8. cs-host

    Nilai yang disertakan oleh penampil dalam Host header permintaan. Jika Anda menggunakan nama CloudFront domain di URL objek Anda (seperti d111111abcdef8.cloudfront.net), bidang ini berisi nama domain tersebut. Jika Anda menggunakan nama domain alternatif (CNames) di URL objek Anda (seperti www.example.com), bidang ini berisi nama domain alternatif.

  9. cs-uri-stem

    Seluruh URL permintaan, termasuk string kueri (jika ada), tetapi tanpa nama domain. Sebagai contoh, /images/cat.jpg?mobile=true.

    catatan

    Dalam log standar, cs-uri-stem nilainya tidak menyertakan string kueri.

  10. cs-bytes

    Jumlah total byte data yang disertakan oleh penampil, termasuk header. Untuk WebSocket koneksi, ini adalah jumlah total byte yang dikirim dari klien ke server pada koneksi.

  11. x-edge-location

    Lokasi tepi yang melayani permintaan. Setiap lokasi tepi diidentifikasi dengan kode tiga huruf dan nomor yang diberikan secara sewenang-wenang (misalnya, DFW3). Kode tiga huruf biasanya sesuai dengan kode bandara International Air Transport Association (IATA) untuk bandara di dekat lokasi geografis lokasi tepi. (Ringkasan ini mungkin berubah di masa mendatang.)

  12. x-edge-request-id

    String buram yang secara unik mengidentifikasi permintaan. CloudFront juga mengirimkan string ini di header x-amz-cf-id respons.

  13. x-host-header

    Nama domain CloudFront distribusi (misalnya, d111111abcdef8.cloudfront.net).

  14. time-taken

    Jumlah detik (hingga seperseribu detik, misalnya, 0,082) dari saat server menerima permintaan penampil hingga saat server menulis byte terakhir dari respons ke antrian output, yang diukur pada server. Dari perspektif penampil, total waktu untuk mendapatkan respons penuh akan lebih lama dari nilai ini karena latensi jaringan dan buffering TCP.

  15. cs-protocol-version

    Versi HTTP yang ditentukan penampil dalam permintaan. Nilai yang mungkin termasuk adalah HTTP/0.9, HTTP/1.0, HTTP/1.1, HTTP/2.0, dan HTTP/3.0.

  16. c-ip-version

    Versi IP permintaan (IPv4 atau IPv6).

  17. cs-user-agent

    Nilai dari User-Agent header dalam permintaan. User-Agent header mengidentifikasi sumber permintaan, seperti jenis perangkat dan peramban yang mengirimkan permintaan atau, jika permintaan berasal dari mesin pencari, mesin pencari mana.

  18. cs-referer

    Nilai dari Referer header dalam permintaan. Ini adalah nama domain yang membuat permintaan. Perujuk umum termasuk mesin pencari, situs web lain yang terhubung langsung ke objek Anda, dan situs web Anda sendiri.

  19. cs-cookie

    Cookie header dalam permintaan, termasuk nama—pasangan nilai dan atribut terkait.

    catatan

    Field ini dipotong menjadi 800 byte.

  20. cs-uri-query

    Bagian utas kueri URL permintaan, jika ada.

  21. x-edge-response-result-type

    Bagaimana server mengklasifikasikan respons tepat sebelum mengembalikan respons ke penampil. Lihat juga x-edge-result-type bidang. Nilai yang mungkin termasuk:

    • Hit – Server melayani objek ke penampil dari cache.

    • RefreshHit – Server menemukan objek dalam cache tetapi objek telah kedaluwarsa, sehingga server menghubungi asal untuk memverifikasi bahwa cache memiliki versi terbaru dari objek tersebut.

    • Miss – Permintaan tidak dapat dipenuhi oleh objek dalam cache, sehingga server meneruskan permintaan ke server asal dan mengembalikan hasil ke penampil.

    • LimitExceeded— Permintaan ditolak karena CloudFront kuota (sebelumnya disebut sebagai batas) terlampaui.

    • CapacityExceeded— Server mengembalikan kesalahan 503 karena tidak memiliki kapasitas yang cukup pada saat permintaan untuk melayani objek.

    • Error – Biasanya, ini berarti permintaan tersebut mengakibatkan kesalahan klien (nilai sc-status bidang ada di 4xx atau kesalahan server (nilai sc-status bidang ada di 5xx beragam).

      Jika nilai x-edge-result-type adalah Error dan nilai bidang ini tidak Error, klien terputus sebelum menyelesaikan unduhan.

    • Redirect – Server mengarahkan penampil dari HTTP ke HTTPS sesuai dengan pengaturan distribusi.

  22. x-forwarded-for

    Jika penampil menggunakan proksi HTTP atau timbangantor beban untuk mengirim permintaan, nilai c-ip adalah alamat IP dari perantara atau pemukul beban. Dalam hal ini, bidang ini adalah alamat IP penampil yang memulai permintaan. Bidang ini dapat berisi beberapa alamat IP yang dipisahkan koma. Setiap alamat IP dapat berupa alamat IPv4 (misalnya,192.0.2.183) atau alamat IPv6 (misalnya,). 2001:0db8:85a3::8a2e:0370:7334

  23. ssl-protocol

    Saat permintaan menggunakan HTTPS, kolom ini berisi protokol SSL/TLS yang dinegosiasikan penampil dan server untuk mentransmisikan permintaan dan respons. Untuk daftar kemungkinan nilai, lihat protokol SSL/TLS yang didukung dalam Protokol dan cipher yang didukung antara pemirsa dan CloudFront.

  24. ssl-cipher

    Saat permintaan menggunakan HTTPS, kolom ini berisi cipher SSL/TLS yang dinegosiasikan penampil dan server untuk mengenkripsi permintaan dan respons. Untuk daftar kemungkinan nilai, lihat cipher SSL/TLS yang didukung dalam Protokol dan cipher yang didukung antara pemirsa dan CloudFront.

  25. x-edge-result-type

    Bagaimana server menggolongkan respons setelah byte terakhir meninggalkan server. Dalam beberapa kasus, jenis hasil dapat berubah antara waktu saat server siap mengirimkan respons dan waktu saat server selesai mengirimkan respons. Lihat juga x-edge-response-result-type bidang.

    Misalnya, dalam streaming HTTP, seandainya server menemukan segmen aliran di cache. Dalam skenario itu, nilai kolom ini biasanya adalah Hit. Namun, jika penampil menutup koneksi sebelum server mengirimkan seluruh segmen, jenis hasil akhir (dan nilai kolom ini) adalah Error.

    WebSocket koneksi akan memiliki nilai Miss untuk bidang ini karena konten tidak dapat di-cache dan diproksi langsung ke asal.

    Nilai yang mungkin termasuk:

    • Hit – Server melayani objek ke penampil dari cache.

    • RefreshHit – Server menemukan objek dalam cache tetapi objek telah kedaluwarsa, sehingga server menghubungi asal untuk memverifikasi bahwa cache memiliki versi terbaru dari objek tersebut.

    • Miss – Permintaan tidak dapat dipenuhi oleh objek di dalam cache, sehingga server meneruskan permintaan ke asal dan mengembalikan hasil ke penampil.

    • LimitExceeded— Permintaan ditolak karena CloudFront kuota (sebelumnya disebut sebagai batas) terlampaui.

    • CapacityExceededServer mengembalikan kode status HTTP 503 karena tidak memiliki kapasitas yang cukup pada saat permintaan untuk melayani objek.

    • Error – Biasanya, ini berarti permintaan tersebut mengakibatkan kesalahan klien (nilai sc-status bidang ada di 4xx atau kesalahan server (nilai sc-status bidang ada di 5xx beragam). Jika nilai sc-status adalah 200, atau jika nilai bidang ini adalah Error dan nilai dari x-edge-response-result-type bidang tidak Error, artinya permintaan HTTP berhasil tetapi klien terputus sebelum menerima semua byte.

    • Redirect – Server mengarahkan penampil dari HTTP ke HTTPS sesuai dengan pengaturan distribusi.

  26. fle-encrypted-fields

    Jumlah bidang enkripsi tingkat lapangan yang dienkripsi dan diteruskan server ke asal. CloudFront server mengalirkan permintaan yang diproses ke asal saat mereka mengenkripsi data, sehingga bidang ini dapat memiliki nilai meskipun nilainya fle-status adalah kesalahan.

  27. fle-status

    Saat enkripsi tingkat lapangan dikonfigurasi untuk distribusi, bidang ini berisi kode yang menunjukkan apakah badan permintaan berhasil diproses. Ketika server berhasil memproses isi permintaan, mengenkripsi nilai dalam bidang yang ditentukan, dan meneruskan permintaan ke asal, nilai bidang ini adalah Processed. Nilai dari x-edge-result-type masih dapat menunjukkan kesalahan sisi klien atau sisi server dalam kasus ini.

    Nilai yang mungkin untuk kolom ini meliputi:

    • ForwardedByContentType – Server meneruskan permintaan ke tempat asal tanpa mengurai atau enkripsi karena tidak ada jenis konten yang dikonfigurasi.

    • ForwardedByQueryArgs— Server meneruskan permintaan ke asal tanpa parsing atau enkripsi karena permintaan berisi argumen kueri yang tidak ada dalam konfigurasi untuk enkripsi tingkat lapangan.

    • ForwardedDueToNoProfile – Server meneruskan permintaan ke tempat asal tanpa mengurai atau enkripsi karena tidak ada profil yang ditentukan dalam konfigurasi untuk enkripsi tingkat lapangan.

    • MalformedContentTypeClientError – Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena nilai Content-Type header dalam format yang tidak valid.

    • MalformedInputClientError – Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena bodi permintaan dalam format yang tidak valid.

    • MalformedQueryArgsClientError – Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena argumen kueri kosong atau dalam format yang tidak valid.

    • RejectedByContentType – Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena tidak ada jenis konten yang ditentukan dalam konfigurasi untuk enkripsi tingkat lapangan.

    • RejectedByQueryArgs – Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena tidak ada alasan kueri yang ditentukan dalam konfigurasi untuk enkripsi tingkat lapangan.

    • ServerError – Server asal mengembalikan kesalahan.

    Jika permintaan melebihi kuota enkripsi tingkat lapangan (sebelumnya disebut sebagai batas), bidang ini berisi salah satu kode kesalahan berikut, dan server mengembalikan kode status HTTP 400 ke penampil. Untuk daftar kuota saat ini pada enkripsi tingkat lapangan, lihat Kuotas pada enkripsi tingkat lapangan.

    • FieldLengthLimitClientError – Kolom yang dikonfigurasi untuk dienkripsi melebihi panjang maksimum yang diizinkan.

    • FieldNumberLimitClientError – Permintaan agar distribusi dikonfigurasi untuk mengenkripsi berisi lebih dari jumlah kolom yang diperbolehkan.

    • RequestLengthLimitClientError – Panjang badan permintaan melebihi panjang maksimum yang diperbolehkan ketika enkripsi tingkat lapangan dikonfigurasi.

  28. sc-content-type

    Nilai HTTP Content-Type header respons.

  29. sc-content-len

    Nilai HTTP Content-Length header respons.

  30. sc-range-start

    Saat tanggapan berisi HTTP Content-Range header, kolom ini berisi nilai mulai rentang.

  31. sc-range-end

    Saat tanggapan berisi HTTP Content-Range header, kolom ini berisi nilai akhir rentang.

  32. c-port

    Nomor port permintaan dari penampil.

  33. x-edge-detailed-result-type

    Bidang ini berisi nilai yang sama dengan x-edge-result-type bidang, kecuali dalam kasus berikut:

    • Ketika objek disajikan ke penampil dari lapisan Origin Shield, bidang ini berisiOriginShieldHit.

    • Ketika objek tidak dalam CloudFront cache dan respons dihasilkan oleh permintaan asal fungsi Lambda @Edge, bidang ini berisi. MissGeneratedResponse

    • Ketika nilai bidang adalahError, x-edge-result-type bidang ini berisi salah satu nilai berikut dengan informasi lebih lanjut tentang kesalahan:

      • AbortedOrigin – Server mengalami masalah dengan asal usul.

      • ClientCommError – Respons ke penampil terganggu karena masalah komunikasi antara server dan penampil.

      • ClientGeoBlocked— Distribusi dikonfigurasi untuk menolak permintaan dari lokasi geografis pemirsa.

      • ClientHungUpRequest – Penampil berhenti sebelum waktunya saat mengirim permintaan.

      • Error— Terjadi kesalahan yang jenis kesalahannya tidak sesuai dengan kategori lainnya. Jenis kesalahan ini dapat terjadi saat server menjalankan respons kesalahan dari cache.

      • InvalidRequest – Server menerima permintaan yang tidak valid dari penampil.

      • InvalidRequestBlocked – Akses ke sumber daya yang diminta diblokir.

      • InvalidRequestCertificate— Distribusi tidak cocok dengan sertifikat SSL/TLS tempat koneksi HTTPS dibuat.

      • InvalidRequestHeader Permintaan mengandung header yang tidak valid.

      • InvalidRequestMethod – Distribusi tidak dikonfigurasi untuk menangani metode permintaan HTTP yang digunakan. Ini dapat terjadi ketika distribusi hanya mendukung permintaan yang dapat disimpan.

      • OriginCommError— Permintaan habis waktu saat menghubungkan ke asal, atau membaca data dari asal.

      • OriginConnectError— Server tidak dapat terhubung ke asal.

      • OriginContentRangeLengthErrorContent-Length Header dalam respons asal tidak cocok dengan panjang di Content-Range header.

      • OriginDnsError— Server tidak dapat menyelesaikan nama domain asal.

      • OriginError - Asal memberikan jawaban yang salah.

      • OriginHeaderTooBigError – Header yang dikembalikan oleh asalnya terlalu besar untuk diproses oleh server edge.

      • OriginInvalidResponseError – Asal memberikan respons tidak valid.

      • OriginReadError— Server tidak bisa membaca dari asalnya.

      • OriginWriteError— Server tidak bisa menulis ke asal.

      • OriginZeroSizeObjectError – Objek seukuran nol yang dikirim dari sumber mengakibatkan kesalahan.

      • SlowReaderOriginError – Penampil lambat untuk membaca pesan yang menyebabkan kesalahan asal.

  34. c-country

    Kode negara yang mewakili lokasi geografis pemirsa, sebagaimana ditentukan oleh alamat IP pemirsa. Untuk daftar kode negara, lihat ISO 3166-1 alpha-2.

  35. cs-accept-encoding

    Nilai dari Accept-Encoding header di permintaan penampil.

  36. cs-accept

    Nilai dari Accept header di permintaan penampil.

  37. cache-behavior-path-pattern

    Pola jalur yang mengidentifikasi perilaku cache yang sesuai dengan permintaan penampil.

  38. cs-headers

    Header HTTP (nama dan nilai) dalam permintaan penampil.

    catatan

    Field ini dipotong menjadi 800 byte.

  39. cs-header-names

    Nama header HTTP (bukan nilai) pada permintaan penampil.

    catatan

    Field ini dipotong menjadi 800 byte.

  40. cs-headers-count

    Jumlah header HTTP di permintaan penampil.

  41. origin-fbl

    Jumlah detik latensi byte pertama antara CloudFront dan asal Anda.

  42. origin-lbl

    Jumlah detik latensi byte terakhir antara CloudFront dan asal Anda.

  43. asn

    Nomor sistem otonom (ASN) dari pemirsa.

  44. primary-distribution-id

    Ketika penerapan berkelanjutan diaktifkan, ID ini mengidentifikasi distribusi mana yang utama dalam distribusi saat ini.

  45. primary-distribution-dns-name

    Ketika penerapan berkelanjutan diaktifkan, nilai ini menunjukkan nama domain utama yang terkait dengan CloudFront distribusi saat ini (misalnya, d111111abcdef8.cloudfront.net).

    Bidang CMCD dalam log waktu nyata

    Untuk informasi selengkapnya tentang bidang ini, lihat dokumen CTA Specification Web Application Video Ecosystem - Common Media Client Data CTA-5004.

  46. cmcd-encoded-bitrate

    Bitrate yang dikodekan dari objek audio atau video yang diminta.

  47. cmcd-buffer-length

    Panjang buffer dari objek media yang diminta.

  48. cmcd-buffer-starvation

    Apakah buffer kelaparan di beberapa titik antara permintaan sebelumnya dan permintaan objek. Ini dapat menyebabkan pemain berada dalam stat rebuffering, yang dapat menghentikan pemutaran video atau audio.

  49. cmcd-content-id

    String unik yang mengidentifikasi konten saat ini.

  50. cmcd-object-duration

    Durasi pemutaran objek yang diminta (dalam milidetik).

  51. cmcd-deadline

    Batas waktu dari waktu permintaan bahwa sampel pertama objek ini harus tersedia, sehingga status buffer underrun atau masalah pemutaran lainnya dihindari.

  52. cmcd-measured-throughput

    Throughput antara klien dan server, yang diukur oleh klien.

  53. cmcd-next-object-request

    Jalur relatif dari objek yang diminta berikutnya.

  54. cmcd-next-range-request

    Jika permintaan berikutnya adalah permintaan objek sebagian, string ini menunjukkan rentang byte yang akan diminta.

  55. cmcd-object-type

    Jenis media dari objek saat ini yang diminta.

  56. cmcd-playback-rate

    1 jika real-time, 2 jika kecepatan ganda, 0 jika tidak bermain.

  57. cmcd-requested-maximum-throughput

    Throughput maksimum yang diminta yang dianggap klien cukup untuk pengiriman aset.

  58. cmcd-streaming-format

    Format streaming yang menentukan permintaan saat ini.

  59. cmcd-session-id

    GUID yang mengidentifikasi sesi pemutaran saat ini.

  60. cmcd-stream-type

    Token mengidentifikasi ketersediaan segmen. v= semua segmen tersedia. l= segmen menjadi tersedia dari waktu ke waktu.

  61. cmcd-startup

    Kunci disertakan tanpa nilai jika objek dibutuhkan segera selama startup, pencarian, atau pemulihan setelah peristiwa buffer-kosong.

  62. cmcd-top-bitrate

    Rendition bitrate tertinggi yang dapat dimainkan klien.

  63. cmcd-version

    Versi spesifikasi ini digunakan untuk menafsirkan nama kunci dan nilai yang ditentukan. Jika kunci ini dihilangkan, klien dan server harus menafsirkan nilai-nilai yang didefinisikan oleh versi 1.

Titik Akhir (Kinesis Data Streams)

Titik akhir berisi informasi tentang Kinesis Data Streams tempat Anda ingin mengirim log waktu nyata. Anda menyediakan Amazon Resource Name (ARN) dari aliran data.

Untuk informasi selengkapnya tentang membuat Kinesis Data Streams, lihat topik berikut di Panduan Pengembang Amazon Kinesis Data Streams.

Saat Anda membuat aliran data, Anda perlu menentukan jumlah shard. Gunakan informasi berikut untuk membantu Anda memperkirakan jumlah shard yang Anda butuhkan.

Untuk memperkirakan jumlah shard untuk aliran data Kinesis Anda
  1. Hitung (atau perkirakan) jumlah permintaan per detik yang diterima CloudFront distribusi Anda.

    Anda dapat menggunakan laporan CloudFront penggunaan (di CloudFront konsol) dan CloudFront metrik (di CloudWatch konsol CloudFront dan Amazon) untuk membantu menghitung permintaan per detik.

  2. Tentukan ukuran tipikal dari satu catatan log waktu nyata.

    Secara umum, satu catatan log adalah sekitar 500 byte. Catatan besar yang mencakup semua kolom yang tersedia biasanya sekitar 1 KB.

    Jika Anda tidak yakin ukuran catatan log Anda, Anda dapat mengaktifkan log waktu nyata dengan laju pengambilan sampel rendah (misalnya, 1%), dan kemudian menghitung ukuran rekaman rata-rata menggunakan data pemantauan di Kinesis Data Streams (total byte masuk dibagi dengan jumlah total catatan).

  3. Di Kalkulator harga pada halaman harga Amazon Kinesis Data Streams, masukkan jumlah permintaan (catatan) per detik, dan ukuran rekaman rata-rata dari satu catatan log. Kemudian pilih Tampilkan penghitungan.

    Kalkulator harga menunjukkan jumlah pecahan yang Anda butuhkan. (Ini juga menunjukkan perkiraan biaya.)

    Contoh berikut menunjukkan bahwa untuk ukuran catatan rata-rata 0,5 KB, dan 50.000 permintaan per detik, Anda perlu 50 pecahan.

    Contoh di Amazon Kinesis Data Streams yang menunjukkan pecahan yang direkomendasikan.

Peran IAM

Peran AWS Identity and Access Management (IAM) yang memberikan CloudFront izin untuk mengirimkan log real-time ke aliran data Kinesis Anda.

Saat membuat konfigurasi log real-time dengan CloudFront konsol, Anda dapat memilih Buat peran layanan baru agar konsol membuat peran IAM untuk Anda.

Saat Anda membuat konfigurasi log real-time dengan AWS CloudFormation atau CloudFront API (AWS CLI atau SDK), Anda harus membuat peran IAM sendiri dan menyediakan peran ARN. Untuk membuat peran IAM sendiri, gunakan kebijakan berikut.

Kebijakan kepercayaan peran IAM

Untuk menggunakan kebijakan kepercayaan peran IAM berikut, ganti 111122223333 dengan nomor Anda. Akun AWS ConditionElemen dalam kebijakan ini membantu mencegah masalah wakil yang membingungkan karena hanya CloudFront dapat mengambil peran ini atas nama distribusi di Anda Akun AWS.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

Kebijakan izin peran IAM untuk aliran data yang tidak terenkripsi

Untuk menggunakan kebijakan berikut, ganti arn:aws:kinesis:us-east- 2:123456789012:stream/ dengan ARN aliran data Kinesis Anda. StreamName

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:DescribeStreamSummary", "kinesis:DescribeStream", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName" ] } ] }

Kebijakan izin peran IAM untuk aliran data terenkripsi

Untuk menggunakan kebijakan berikut, ganti arn:aws:kinesis:us-east- 2:123456789012: stream/ dengan ARN aliran data Kinesis Anda dan arn:aws:kms:us-east- 2:123456789012: key/e58a3d0b-fe4f-4047-a495-ae03cc73d486 dengan StreamName ARN Anda. AWS KMS key

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:DescribeStreamSummary", "kinesis:DescribeStream", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486" ] } ] }

Membuat konsumen Kinesis Data Streams

Untuk membaca dan menganalisis log waktu nyata, Anda membangun atau menggunakan Kinesis Data Streams konsumen. Saat Anda membangun konsumen untuk log CloudFront waktu nyata, penting untuk mengetahui bahwa bidang di setiap catatan log waktu nyata selalu dikirimkan dalam urutan yang sama, seperti yang tercantum di Bidang bagian. Pastikan Anda membangun konsumen untuk mengakomodasi pesanan tetap ini.

Misalnya, pertimbangkan konfigurasi log waktu nyata yang hanya mencakup tiga kolom ini: time-to-first-byte, sc-status, dan c-country. Dalam skenario ini, kolom terakhir, c-country, adalah selalu nomor kolom 3 dalam setiap catatan log. Namun, jika Anda kemudian menambahkan kolom ke konfigurasi log waktu nyata, penempatan setiap kolom dalam catatan dapat berubah.

Misalnya, jika Anda menambahkan bidang sc-bytes dan time-taken ke konfigurasi log waktu nyata, kolom-kolom ini dimasukkan ke dalam setiap catatan log sesuai dengan urutan yang ditunjukkan pada Bidang bagian. Urutan yang dihasilkan dari semua lima bidang adalah time-to-first-byte, sc-status, sc-bytes, time-taken, dan c-country. Bidang c-country awalnya merupakan bidang nomor 3, tapi sekarang menjadi bidang nomor 5. Pastikan aplikasi konsumen Anda dapat menangani kolom yang mengubah posisi dalam catatan log, jika Anda menambahkan kolom ke konfigurasi log waktu nyata.

Memecahkan masalah log waktu nyata

Setelah Anda membuat konfigurasi log waktu nyata, Anda mungkin menemukan bahwa tidak ada catatan (atau tidak semua catatan) yang dikirimkan ke Stream Data Kinesis. Dalam hal ini, Anda harus terlebih dahulu memverifikasi bahwa CloudFront distribusi Anda menerima permintaan penampil. Jika ya, Anda dapat memeriksa pengaturan berikut untuk melanjutkan pemecahan masalah.

Izin peran IAM

Untuk mengirimkan catatan log real-time ke aliran data Kinesis Anda, CloudFront gunakan peran IAM dalam konfigurasi log waktu nyata. Pastikan bahwa kebijakan kepercayaan peran dan kebijakan izin peran sesuai dengan kebijakan yang ditunjukkan dalam Peran IAM.

Perutean Data Kinesis

Jika CloudFront menulis catatan log real-time ke aliran data Kinesis Anda lebih cepat daripada yang dapat ditangani oleh aliran, Kinesis Data Streams mungkin membatasi permintaan dari. CloudFront Dalam hal ini, Anda dapat meningkatkan jumlah pecahan dalam aliran data Kinesis. Setiap shard dapat mendukung penulisan hingga 1.000 catatan per detik, hingga maksimum penulisan data 1 MB per detik.