View a markdown version of this page

Metode pembantu umum - Amazon CloudFront

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

Metode pembantu umum

Halaman ini menyediakan metode pembantu tambahan di dalam CloudFront Fungsi. Untuk menggunakan metode ini, buat CloudFront fungsi menggunakan JavaScript runtime 2.0.

import cf from 'cloudfront';

Untuk informasi selengkapnya, lihat JavaScript fitur runtime 2.0 untuk Fungsi CloudFront.

Metadata EdgeLocation

Metode ini membutuhkan penggunaan cloudfront modul.

catatan

Anda hanya dapat menggunakan metode ini untuk fungsi permintaan pemirsa. Untuk fungsi respons pemirsa, metode ini kosong.

Gunakan JavaScript objek ini untuk mendapatkan kode bandara lokasi tepi, wilayah Regional Edge Cache yang diharapkan atau alamat IP CloudFront server yang digunakan untuk menangani permintaan. Metadata ini hanya tersedia pemicu peristiwa permintaan penampil.

cf.edgeLocation = { name: SEA serverIp: 1.2.3.4 region: us-west-2 }

cf.edgeLocationObjek dapat berisi yang berikut:

name

Kode IATA tiga huruf dari lokasi tepi yang menangani permintaan.

ServeIP

Alamat IPv4 atau IPv6 dari server yang menangani permintaan.

region

CloudFront Regional Edge Cache (REC) yang diharapkan akan digunakan permintaan jika ada cache yang hilang. Nilai ini tidak diperbarui jika REC yang diharapkan tidak tersedia dan REC cadangan digunakan untuk permintaan tersebut. Ini tidak termasuk lokasi Origin Shield yang digunakan, kecuali jika REC utama dan Origin Shield berada di lokasi yang sama.

catatan

CloudFront Fungsi tidak dipanggil untuk kedua kalinya ketika CloudFront dikonfigurasi untuk menggunakan failover asal. Untuk informasi selengkapnya, lihat Optimalkan ketersediaan tinggi dengan failover CloudFront asal.

metode mentah QueryString ()

Metode ini tidak memerlukan cloudFront modul.

Gunakan rawQueryString() metode ini untuk mengambil string kueri yang tidak diurai dan tidak diubah sebagai string.

Permintaan

function handler(event) { var request = event.request; const qs = request.rawQueryString(); }

Respons

Mengembalikan string query lengkap dari permintaan masuk sebagai nilai string tanpa memimpin?.

  • Jika tidak ada string query, tetapi ? hadir, fungsi mengembalikan string kosong.

  • Jika tidak ada string kueri dan ? tidak hadir, fungsi kembaliundefined.

Kasus 1: String kueri lengkap dikembalikan (tanpa memimpin?)

URL permintaan masuk: https://example.com/page?name=John&age=25&city=Boston

rawQueryString()mengembalikan: "name=John&age=25&city=Boston"

Kasus 2: String kosong dikembalikan (kapan ? ada tetapi tanpa parameter)

URL permintaan masuk: https://example.com/page?

rawQueryString()mengembalikan: ""

Kasus 3: undefined dikembalikan (tidak ada string kueri dan tidak?)

URL permintaan masuk: https://example.com/page

rawQueryString()mengembalikan: undefined

metode log CustomData ()

Untuk menggunakan metode ini, impor cloudfront modul.

Gunakan logCustomData() metode ini untuk mengirim data kustom dari CloudFront fungsi Amazon Anda ke log CloudFront akses. Data ditulis ke bidang viewer-request-log-data atau viewer-response-log-data log, tergantung pada apakah fungsi tersebut terkait dengan permintaan penampil atau peristiwa respons penampil.

Metode ini menerima argumen string tunggal. Untuk mencatat objek, gunakan JSON.stringify() untuk mengubahnya menjadi string terlebih dahulu. Contoh:

const resp_obj = JSON.stringify(some_obj); cf.logCustomData(resp_obj);

Setiap bidang mendukung hingga 800 byte data. CloudFront URL-encodes secara otomatis data sebelum menulisnya ke bidang log. CloudFront memotong data apa pun di atas 800 byte setelahnya. URL-encoding Jika fungsi Anda memanggil logCustomData() beberapa kali dalam satu eksekusi, hanya CloudFront menggunakan nilai terakhir.

Tambahkan bidang ke konfigurasi log Anda

Untuk menerima data ini di log CloudFront akses Anda, Anda harus menambahkan viewer-request-log-data atau viewer-response-log-data bidang ke konfigurasi log real-time atau pengaturan pencatatan standar (v2). CloudFront Fungsi tidak mendukung pencatatan data khusus untuk titik keberadaan tertanam (POP).

Perbedaan dari console.log ()

logCustomData()Metode ini tidak menggantikan console.log() CloudFront Functions. Gunakan console.log() untuk mengirim baris log ke Amazon CloudWatch Logs. Gunakan cf.logCustomData() untuk menulis data khusus untuk CloudFront mengakses log (log waktu nyata dan pencatatan standar (v2)). Anda dapat menggunakan kedua metode dalam fungsi yang sama. Untuk informasi selengkapnya, lihat Log CloudFront fungsi.

Metode ini menggunakan sintaks berikut:

cf.logCustomData(String);
contoh Log header dalam fungsi permintaan penampil
import cf from 'cloudfront'; function handler(event) { var request = event.request; // Check if the debug header exists, if so log it if (request.headers['x-debug-header']) { // Log the debug header value cf.logCustomData("debug header found: " + request.headers['x-debug-header'].value); } return request; }