

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

# Metode pembantu umum
<a name="general-helper-methods"></a>

Halaman ini menyediakan metode pembantu tambahan di dalam CloudFront Functions. 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](functions-javascript-runtime-20.md).

## `Metadata EdgeLocation`
<a name="edge-location-metadata"></a>

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 Cache Edge ](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches) Regional yang diharapkan atau alamat IP CloudFront server yang digunakan untuk menangani permintaan. Metadata ini hanya tersedia sebagai pemicu peristiwa permintaan pemirsa.

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

Ob `cf.edgeLocation` jek dapat berisi yang berikut:

**name**  
Kode [ IATA tiga huruf ](https://en.wikipedia.org/wiki/IATA_airport_code) dari lokasi tepi yang menangani permintaan.

**ServerIP**  
Alamat IPv4 atau IPv6 dari server yang menangani permintaan.

**region**  
 CloudFront Regional Edge Cache (REC) yang * diharapkan * untuk digunakan permintaan jika ada cache yang hilang. Nilai ini tidak diperbarui jika REC yang diharapkan tidak tersedia dan REC cadangan digunakan untuk permintaan. Ini tidak termasuk lokasi Origin Shield yang digunakan, kecuali dalam kasus ketika REC utama dan Perisai Asal adalah 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 fail CloudFront over asal](high_availability_origin_failover.md).

## ``metode mentah QueryString ()
<a name="raw-query-string-method"></a>

Metode ini tidak memerlukan `cloudFront` modul.

Gunakan `rawQueryString()` metode 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 kueri lengkap dari permintaan masuk sebagai nilai string tanpa garis depan`?`. 
+ Jika tidak ada string kueri, tetapi `?` ada, fungsi mengembalikan string kosong. 
+ Jika tidak ada string kueri dan `?` tidak ada, fungsi kembali`undefined`.

**Kasus 1: String kueri penuh dikembalikan (tanpa awalan`?`)**  
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 (bila `?` ada tetapi tanpa parameter)**  
URL permintaan masuk: `https://example.com/page?`  
`rawQueryString()`mengembalikan: `""`

**Kasus 3: `undefined` dikembalikan (tidak ada string kueri dan tidak ada`?`)**  
URL permintaan masuk: `https://example.com/page`  
`rawQueryString()`mengembalikan: `undefined`

## `log CustomData ()` metode
<a name="log-custom-data-method"></a>

Untuk menggunakan metode ini, impor `cloudfront` modul.

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

Metode 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 di atas 800 byte setelahnya. URL-encoding Jika fungsi Anda memang `logCustomData()` gil 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-response-log-data` bidang `viewer-request-log-data` atau ke [ konfigurasi log ](real-time-logs.md) real-time atau [ pengaturan log ](standard-logging.md) standar (v2).

**Perbedaan dari console.log ()**  
`logCustomData()`Metode ini tidak menggantikan `console.log()` CloudFront fungsi. Gunakan `console.log()` untuk mengirim baris log ke Amazon CloudWatch Logs. Gunakan `cf.logCustomData()` untuk menulis data khusus untuk CloudFront mengakses log (log [ real-time ](real-time-logs.md) dan pen [ catatan standar (v2)](standard-logging.md)). Anda dapat menggunakan kedua metode dalam fungsi yang sama. Untuk informasi selengkapnya, lihat [ CloudFront Log fungsi](edge-functions-logs.md).

Metode ini menggunakan sintaks berikut:

```
cf.logCustomData(String);
```

**Example 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;
}
```