

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

# Gunakan log akses waktu nyata
<a name="real-time-logs"></a>

Dengan log akses 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 akses real-time untuk memantau, menganalisis, dan mengambil tindakan berdasarkan kinerja pengiriman konten.

CloudFront log akses real-time dapat dikonfigurasi. Anda dapat memilih:
+ *Rasio pengambilan sampel* untuk log waktu nyata Anda—yaitu, persentase permintaan yang ingin Anda terima catatan log akses real-time.
+ Kolom khusus yang ingin Anda terima di catatan log.
+ Perilaku cache tertentu (pola jalur) yang ingin Anda terima log waktu nyata.

CloudFront log akses real-time dikirimkan ke aliran data pilihan Anda di Amazon Kinesis Data Streams. Anda dapat membangun [konsumen aliran data Kinesis](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-consumers.html) 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 akses real-time, selain biaya yang Anda keluarkan untuk menggunakan Kinesis Data Streams. Untuk informasi selengkapnya tentang harga, lihat [Amazon CloudFront Harga](https://aws.amazon.com/cloudfront/pricing/) dan [Harga Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/).

**penting**  
Kami menyarankan Anda menggunakan log untuk memahami sifat permintaan untuk konten Anda, bukan sebagai akuntansi lengkap dari semua permintaan. CloudFront memberikan log akses real-time 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 akses real-time, jumlah entri dalam log akses real-time tidak akan cocok dengan penggunaan yang muncul dalam laporan AWS penagihan dan penggunaan.

**Topics**
+ [Membuat dan menggunakan konfigurasi log akses real-time](#create-real-time-log-config)
+ [Memahami konfigurasi log akses real-time](#understand-real-time-log-config)
+ [Membuat konsumen Kinesis Data Streams](#real-time-log-consumer-guidance)
+ [Memecahkan masalah log akses waktu nyata](#real-time-log-troubleshooting)

## Membuat dan menggunakan konfigurasi log akses real-time
<a name="create-real-time-log-config"></a>

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

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

------
#### [ Console ]

**Untuk membuat konfigurasi log akses real-time**

1. Masuk ke Konsol Manajemen AWS dan buka halaman **Log** di CloudFront konsol di[https://console.aws.amazon.com/cloudfront/v4/home?#/logs](https://console.aws.amazon.com/cloudfront/v4/home?#/logs).

1. Pilih tab **Konfigurasi waktu nyata**.

1. Pilih **Buat konfigurasi**.

1. Untuk **Nama**, masukkan nama untuk konfigurasi.

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

1. Untuk **Bidang**, pilih bidang yang akan diterima di log akses real-time.
   + Untuk menyertakan semua [bidang CMCD](#CMCD-real-time-logging-fields) untuk log Anda, pilih **CMCD** semua kunci.

1. Untuk **Endpoint**, pilih satu atau beberapa aliran data Kinesis untuk menerima log akses real-time.
**catatan**  
CloudFront log akses real-time dikirimkan ke aliran data yang Anda tentukan di Kinesis Data Streams. Untuk membaca dan menganalisis log akses real-time 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.

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

1. (Opsional) Untuk **Distribusi**, pilih perilaku CloudFront distribusi dan cache untuk dilampirkan ke konfigurasi log akses real-time.

1. Pilih **Buat konfigurasi**.

Jika berhasil, konsol menampilkan detail konfigurasi log akses real-time yang baru saja Anda buat.

Untuk informasi selengkapnya, lihat [Memahami konfigurasi log akses real-time](#understand-real-time-log-config).

------
#### [ AWS CLI ]

Untuk membuat konfigurasi log akses 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 akses real-time (CLI dengan file input)**

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
   ```

1. Buka file dengan nama `rtl-config.yaml` yang baru Anda buat. Edit file untuk menentukan pengaturan konfigurasi log akses real-time yang Anda inginkan, lalu simpan file tersebut. 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 akses real-time](#understand-real-time-log-config).

1. Gunakan perintah berikut untuk membuat konfigurasi log akses real-time 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 akses real-time yang baru saja Anda buat.

**Untuk melampirkan konfigurasi log akses real-time ke distribusi yang ada (CLI dengan file input)**

1. Gunakan perintah berikut untuk menyimpan konfigurasi distribusi untuk CloudFront distribusi yang ingin Anda perbarui. Ganti *distribution\$1ID* dengan ID distribusi.

   ```
   aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
   ```

1. Buka file dengan nama `dist-config.yaml` yang baru Anda buat. Edit file, buat perubahan berikut pada setiap perilaku cache yang Anda perbarui untuk menggunakan konfigurasi log akses real-time.
   + Dalam perilaku cache, tambahkan kolom bernama `RealtimeLogConfigArn`. Untuk nilai bidang, gunakan ARN konfigurasi log akses real-time yang ingin Anda lampirkan ke perilaku cache ini.
   + Ubah nama `ETag` bidang menjadi`IfMatch`, tetapi jangan ubah nilai bidang.

   Simpan file setelah selesai.

1. Gunakan perintah berikut untuk memperbarui distribusi untuk menggunakan konfigurasi log akses real-time. Ganti *distribution\$1ID* 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 akses real-time dengan CloudFront API, gunakan operasi [CreateRealtimeLogConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateRealtimeLogConfig.html)API. Untuk informasi selengkapnya tentang parameter yang Anda tentukan dalam panggilan API ini, lihat [Memahami konfigurasi log akses real-time](#understand-real-time-log-config) dan dokumentasi referensi API untuk AWS SDK atau klien API lainnya.

Setelah membuat konfigurasi log akses real-time, Anda dapat melampirkannya ke perilaku cache, dengan menggunakan salah satu operasi API berikut:
+ Untuk memasangnya ke perilaku cache dalam distribusi yang ada, gunakan [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
+ Untuk memasangnya ke perilaku cache dalam distribusi baru, gunakan [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html).

Untuk kedua operasi API ini, berikan ARN konfigurasi log akses real-time di `RealtimeLogConfigArn` lapangan, di dalam perilaku cache. Untuk informasi selengkapnya tentang bidang lain yang Anda tentukan dalam panggilan API ini, lihat [Semua referensi pengaturan distribusi](distribution-web-values-specify.md) dan dokumentasi referensi API untuk AWS SDK atau klien API lainnya.

------

## Memahami konfigurasi log akses real-time
<a name="understand-real-time-log-config"></a>

Untuk menggunakan log akses CloudFront real-time, Anda mulai dengan membuat konfigurasi log akses real-time. Konfigurasi log akses real-time berisi informasi tentang 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 akses real-time berisi pengaturan berikut:

**Contents**
+ [Nama](#real-time-logs-name)
+ [Tingkat pengambilan sampel](#real-time-logs-sampling-rate)
+ [Bidang](#real-time-logs-fields)
+ [Titik Akhir (Kinesis Data Streams)](#real-time-logs-endpoint)
+ [IAM Role](#real-time-logs-IAM)

### Nama
<a name="real-time-logs-name"></a>

Nama untuk mengidentifikasi konfigurasi log akses real-time.

### Tingkat pengambilan sampel
<a name="real-time-logs-sampling-rate"></a>

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 akses waktu nyata. Untuk menyertakan setiap permintaan penampil dalam log akses 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 log akses waktu nyata Anda.

### Bidang
<a name="real-time-logs-fields"></a>

Daftar bidang yang disertakan dalam setiap catatan log akses real-time. 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)](#CMCD-real-time-logging-fields) yang dapat dikirim oleh klien media player dengan setiap permintaan. CDNs 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 akses real-time Anda jika dikirimkan ke CloudFront. 

1. **`timestamp`**

   Tanggal dan waktu server edge selesai menanggapi permintaan.

1. **`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.

1. **`s-ip`**

   Alamat IP CloudFront server yang melayani permintaan, misalnya, `192.0.2.183` atau`2001:0db8:85a3::8a2e:0370:7334`.

1. **`time-to-first-byte`**

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

1. **`sc-status`**

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

1. **`sc-bytes`**

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

1. **`cs-method`**

   Metode permintaan HTTP yang diterima dari penampil.

1. **`cs-protocol`**

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

1. **`cs-host`**

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

1. **`cs-uri-stem`**

   Seluruh URL permintaan, termasuk string kueri (jika ada), tetapi tanpa nama domain. Misalnya, `/images/cat.jpg?mobile=true`.
**catatan**  
Dalam [log standar](AccessLogs.md), `cs-uri-stem` nilainya tidak menyertakan string kueri.

1. **`cs-bytes`**

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

1. **`x-edge-location`**

   Lokasi tepi yang melayani permintaan. Setiap lokasi tepi diidentifikasi oleh kode tiga huruf dan nomor yang ditetapkan 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.)

1. **`x-edge-request-id`**

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

1. **`x-host-header`**

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

1. **`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.

1. **`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`.

1. **`c-ip-version`**

   Versi IP dari permintaan (IPv4 atau IPv6).

1. **`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.

1. **`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.

1. **`cs-cookie`**

   `Cookie` header dalam permintaan, termasuk nama—pasangan nilai dan atribut terkait.
**catatan**  
Field ini dipotong menjadi 800 byte.

1. **`cs-uri-query`**

   Bagian utas kueri URL permintaan, jika ada.

1. **`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.
   + `LambdaExecutionError`— Fungsi Lambda @Edge yang terkait dengan distribusi tidak selesai karena asosiasi yang salah bentuk, batas waktu fungsi, masalah AWS ketergantungan, atau masalah ketersediaan umum lainnya.

1. **`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 IPv4 alamat (misalnya,`192.0.2.183`) atau IPv6 alamat (misalnya,`2001:0db8:85a3::8a2e:0370:7334`).

1. **`ssl-protocol`**

   Ketika permintaan menggunakan HTTPS, bidang ini berisi SSL/TLS protokol yang dinegosiasikan oleh penampil dan server untuk mentransmisikan permintaan dan respons. Untuk daftar nilai yang mungkin, lihat SSL/TLS protokol yang didukung di. [Protokol dan sandi yang didukung antara pemirsa dan CloudFront](secure-connections-supported-viewer-protocols-ciphers.md)

1. **`ssl-cipher`**

   Ketika permintaan menggunakan HTTPS, bidang ini berisi SSL/TLS cipher yang dinegosiasikan oleh penampil dan server untuk mengenkripsi permintaan dan respons. Untuk daftar nilai yang mungkin, lihat SSL/TLS cipher yang didukung di. [Protokol dan sandi yang didukung antara pemirsa dan CloudFront](secure-connections-supported-viewer-protocols-ciphers.md)

1. **`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 dan koneksi gRPC akan memiliki nilai `Miss` untuk bidang ini karena kontennya 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.
   + `CapacityExceeded`Server 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.
   + `LambdaExecutionError`— Fungsi Lambda @Edge yang terkait dengan distribusi tidak selesai karena asosiasi yang salah bentuk, batas waktu fungsi, masalah AWS ketergantungan, atau masalah ketersediaan umum lainnya.

1. **`fle-encrypted-fields`**

   Jumlah bidang [enkripsi tingkat lapangan yang dienkripsi](field-level-encryption.md) dan diteruskan oleh 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.

1. **`fle-status`**

   Saat [enkripsi tingkat lapangan](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html) 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](cloudfront-limits.md#limits-field-level-encryption).
   + `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.

1. **`sc-content-type`**

   Nilai HTTP `Content-Type` header respons.

1. **`sc-content-len`**

   Nilai HTTP `Content-Length` header respons.

1. **`sc-range-start`**

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

1. **`sc-range-end`**

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

1. **`c-port`**

   Nomor port permintaan dari penampil.

1. **`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](origin-shield.md), bidang ini berisi`OriginShieldHit`.
   + Ketika objek tidak dalam CloudFront cache dan respons dihasilkan oleh [permintaan asal fungsi Lambda @Edge](lambda-at-the-edge.md), bidang ini berisi. `MissGeneratedResponse`
   + Ketika nilai bidang adalah`Error`, `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 SSL/TLS sertifikat 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.
     + `OriginContentRangeLengthError`— `Content-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.

1. **`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](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

1. **`cs-accept-encoding`**

    Nilai dari `Accept-Encoding` header di permintaan penampil.

1. **`cs-accept`**

   Nilai dari `Accept` header di permintaan penampil.

1. **`cache-behavior-path-pattern`**

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

1. **`cs-headers`**

   Header HTTP (nama dan nilai) dalam permintaan penampil.
**catatan**  
Field ini dipotong menjadi 800 byte.

1. **`cs-header-names`**

   Nama header HTTP (bukan nilai) pada permintaan penampil.
**catatan**  
Field ini dipotong menjadi 800 byte.

1. **`cs-headers-count`**

    Jumlah header HTTP di permintaan penampil.

1. **`primary-distribution-id`**

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

1. **`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).

1. **`origin-fbl`**

   Jumlah detik latensi byte pertama antara CloudFront dan asal Anda.

1. **`origin-lbl`**

   Jumlah detik latensi byte terakhir antara CloudFront dan asal Anda.

1. **`asn`**

   Nomor sistem otonom (ASN) dari pemirsa.

1. <a name="CMCD-real-time-logging-fields"></a>
**Bidang CMCD dalam log akses real-time**  
Untuk informasi selengkapnya tentang bidang ini, lihat dokumen [CTA Specification Web Application Video Ecosystem - Common Media Client Data CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).

1. **`cmcd-encoded-bitrate`**

   Bitrate yang dikodekan dari objek audio atau video yang diminta. 

1. **`cmcd-buffer-length`**

   Panjang buffer dari objek media yang diminta.

1. **`cmcd-buffer-starvation`**

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

1. **`cmcd-content-id`**

   String unik yang mengidentifikasi konten saat ini.

1. **`cmcd-object-duration`**

   Durasi pemutaran objek yang diminta (dalam milidetik). 

1. **`cmcd-deadline`**

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

1. **`cmcd-measured-throughput`**

   Throughput antara klien dan server, yang diukur oleh klien.

1. **`cmcd-next-object-request`**

   Jalur relatif dari objek yang diminta berikutnya.

1. **`cmcd-next-range-request`**

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

1. **`cmcd-object-type`**

   Jenis media dari objek saat ini yang diminta.

1. **`cmcd-playback-rate`**

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

1. **`cmcd-requested-maximum-throughput`**

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

1. **`cmcd-streaming-format`**

   Format streaming yang menentukan permintaan saat ini.

1. **`cmcd-session-id`**

   GUID yang mengidentifikasi sesi pemutaran saat ini.

1. **`cmcd-stream-type`**

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

1. **`cmcd-startup`**

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

1. **`cmcd-top-bitrate`**

   Rendition bitrate tertinggi yang dapat dimainkan klien.

1. **`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.

1. **`r-host`**

   Bidang ini dikirim untuk permintaan asal dan ini menunjukkan domain server asal yang digunakan untuk melayani objek. Jika terjadi kesalahan, Anda dapat menggunakan bidang ini untuk menemukan asal terakhir yang dicoba, misalnya:`cd8jhdejh6a.mediapackagev2.us-east-1.amazonaws.com`.

1. **`sr-reason`**

   Bidang ini memberikan alasan mengapa asal dipilih. Ini kosong ketika permintaan ke asal primer berhasil.

   Jika failover asal terjadi, bidang akan berisi kode kesalahan HTTP yang mengarah ke failover, seperti `Failover:403` atau. `Failover:502` Dalam kasus failover asal, jika permintaan yang dicoba ulang juga gagal dan Anda belum mengonfigurasi halaman kesalahan khusus, maka `r-status` tunjukkan respons asal kedua. Namun, jika Anda telah mengonfigurasi halaman kesalahan khusus bersama dengan failover asal, maka ini akan berisi respons asal kedua jika permintaan gagal dan halaman kesalahan khusus dikembalikan sebagai gantinya.

   Jika tidak ada failover asal yang terjadi tetapi pemilihan asal ketahanan sadar kualitas media (MQAR) terjadi, maka ini akan dicatat sebagai. `MediaQuality` Untuk informasi selengkapnya, lihat [Ketahanan sadar kualitas media](media-quality-score.md).

1. **`x-edge-mqcs`**

   Bidang ini menunjukkan Skor Keyakinan Kualitas Media (MQCS) (rentang: 0 — 100) untuk segmen media yang CloudFront diambil di header respons CMSD dari v2. MediaPackage Bidang ini tersedia untuk permintaan yang cocok dengan perilaku cache yang memiliki grup asal berkemampuan MQAR. CloudFront mencatat bidang ini untuk segmen media yang juga disajikan dari cache-nya selain permintaan asal. Untuk informasi selengkapnya, lihat [Ketahanan sadar kualitas media](media-quality-score.md).

1. **`distribution-tenant-id`**

   ID penyewa distribusi.

1. **`connection-id`**

   Pengidentifikasi unik untuk koneksi TLS. 

   Anda harus mengaktifkan MTL untuk distribusi Anda sebelum Anda bisa mendapatkan informasi untuk bidang ini. Untuk informasi selengkapnya, lihat [Otentikasi TLS timbal balik dengan CloudFront (Viewer mTLS)Asal TLS timbal balik dengan CloudFront](mtls-authentication.md).

### Titik Akhir (Kinesis Data Streams)
<a name="real-time-logs-endpoint"></a>

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*.
+ [Membuat dan mengelola aliran](https://docs.aws.amazon.com/streams/latest/dev/working-with-streams.html)
+ [Lakukan operasi Kinesis Data Streams dasar menggunakan AWS CLI](https://docs.aws.amazon.com/streams/latest/dev/fundamental-stream.html)
+ [Membuat aliran](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-create-stream.html) (menggunakan AWS SDK untuk Java)

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 saat CloudFront yang diterima.

   Anda dapat menggunakan [laporan CloudFront penggunaan](https://console.aws.amazon.com/cloudfront/v4/home#/usage) (di CloudFront konsol) dan [CloudFront metrik](viewing-cloudfront-metrics.md#monitoring-console.distributions) (di CloudWatch konsol CloudFront dan Amazon) untuk membantu menghitung permintaan per detik.

1. Tentukan ukuran khas dari catatan log akses real-time tunggal.

   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).

1. Di halaman [harga Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/) AWS Kalkulator Harga, di bawah**, pilih Buat perkiraan kustom Anda sekarang**.
   + Dalam kalkulator, masukkan jumlah permintaan (catatan) per detik.
   + Masukkan ukuran catatan rata-rata dari satu catatan log.
   + Pilih **Tampilkan perhitungan**.

   Kalkulator harga menunjukkan jumlah pecahan yang Anda butuhkan dan perkiraan biaya.

### IAM Role
<a name="real-time-logs-IAM"></a>

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

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

Saat Anda membuat konfigurasi log akses 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 Akun AWS nomor Anda. `Condition`Elemen dalam kebijakan ini membantu mencegah [masalah wakil yang membingungkan](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) karena hanya CloudFront dapat mengambil peran ini atas nama distribusi di Anda Akun AWS.

------
#### [ JSON ]

****  

```
{
    "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/StreamName* dengan ARN aliran data Kinesis Anda.

------
#### [ JSON ]

****  

```
{
    "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/StreamName* dengan ARN aliran data Kinesis Anda dan dengan *arn:aws:kms:us-east-2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486* ARN Anda. AWS KMS key

------
#### [ JSON ]

****  

```
{
    "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
<a name="real-time-log-consumer-guidance"></a>

Untuk membaca dan menganalisis log akses real-time, Anda membuat atau menggunakan konsumen Kinesis *Data* Streams. Saat Anda membangun konsumen untuk log CloudFront waktu nyata, penting untuk mengetahui bahwa bidang di setiap catatan log akses real-time selalu dikirimkan dalam urutan yang sama, seperti yang tercantum di [Bidang](#real-time-logs-fields) bagian. Pastikan Anda membangun konsumen untuk mengakomodasi pesanan tetap ini.

Misalnya, pertimbangkan konfigurasi log akses real-time yang hanya mencakup tiga bidang 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 nanti Anda menambahkan bidang ke konfigurasi log akses real-time, penempatan setiap bidang dalam catatan dapat berubah.

Misalnya, jika Anda menambahkan bidang `sc-bytes` dan `time-taken` konfigurasi log akses real-time, bidang ini dimasukkan ke dalam setiap catatan log sesuai dengan urutan yang ditunjukkan di [Bidang](#real-time-logs-fields) 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 bidang yang mengubah posisi dalam catatan log, jika Anda menambahkan bidang ke konfigurasi log akses real-time Anda.

## Memecahkan masalah log akses waktu nyata
<a name="real-time-log-troubleshooting"></a>

Setelah membuat konfigurasi log akses real-time, Anda mungkin menemukan bahwa tidak ada catatan (atau tidak semua rekaman) yang dikirim ke Kinesis Data Streams. Dalam kasus ini, Anda harus memverifikasi terlebih dahulu bahwa CloudFront distribusi menerima permintaan penampil. Jika ya, Anda dapat memeriksa pengaturan berikut untuk melanjutkan pemecahan masalah.

**Izin peran IAM**  
Untuk mengirimkan catatan log akses real-time ke aliran data Kinesis Anda, CloudFront gunakan peran IAM dalam konfigurasi log akses real-time. Pastikan bahwa kebijakan kepercayaan peran dan kebijakan izin peran sesuai dengan kebijakan yang ditunjukkan dalam [IAM Role](#real-time-logs-IAM).

**Perutean Data Kinesis**  
Jika CloudFront menulis catatan log akses 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.