

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

# Fungsi uji
<a name="test-function"></a>

Sebelum Anda menerapkan fungsi ke live stage (produksi), Anda dapat menguji fungsi Anda untuk memverifikasi bahwa fungsi berfungsi sebagaimana dimaksud. Untuk menguji fungsi, Anda menentukan *objek peristiwa* yang mewakili permintaan HTTP atau respons yang dapat diterima CloudFront distribusi Anda dalam produksi. 

CloudFront Fungsi melakukan hal berikut:

1. Menjalankan fungsi, menggunakan objek acara yang disediakan sebagai input.

1. Mengembalikan hasil fungsi (objek peristiwa yang dimodifikasi) bersama dengan log fungsi atau pesan kesalahan dan *pemanfaatan komputasi* fungsi. Untuk informasi lebih lanjut tentang pemanfaatan komputasi, lihat. [Memahami pemanfaatan komputasi](#compute-utilization)

**catatan**  
Saat Anda menguji suatu fungsi, CloudFront hanya memvalidasi terhadap kesalahan eksekusi fungsi. CloudFronttidak memvalidasi apakah permintaan akan berhasil mengalir setelah diterbitkan. Misalnya, jika fungsi Anda menghapus header yang diperlukan, pengujian akan berhasil karena tidak ada masalah dengan kode. Namun, jika Anda mempublikasikan fungsi dan mengaitkannya dengan distribusi, fungsi tersebut akan gagal saat permintaan dibuat CloudFront.

**Contents**
+ [Mengatur objek acara](#test-function-create-event)
+ [Uji fungsi](#test-function-step-test)
+ [Memahami pemanfaatan komputasi](#compute-utilization)

## Mengatur objek acara
<a name="test-function-create-event"></a>

Sebelum Anda menguji suatu fungsi, Anda harus mengatur objek acara untuk mengujinya. Ada beberapa opsi.

**Opsi 1: Siapkan objek acara tanpa menyimpannya**  
Anda dapat mengatur objek acara di editor visual di CloudFront konsol dan tidak menyimpannya.   
Anda dapat menggunakan objek acara ini untuk menguji fungsi dari CloudFront konsol, meskipun tidak disimpan.

**Opsi 2: Buat objek acara di editor visual**  
Anda dapat mengatur objek acara di editor visual di CloudFront konsol dan tidak menyimpannya. Anda dapat membuat 10 objek acara untuk setiap fungsi sehingga Anda dapat, misalnya, menguji berbagai kemungkinan input.  
Saat Anda membuat objek acara dengan cara ini, Anda dapat menggunakan objek acara untuk menguji fungsi di CloudFront konsol. Anda tidak dapat menggunakannya untuk menguji fungsi menggunakan AWS API atau SDK. 

**Opsi 3: Buat objek acara menggunakan editor teks**  
Anda dapat menggunakan editor teks untuk membuat objek acara dalam format JSON. Untuk informasi tentang struktur objek peristiwa, lihat[Struktur peristiwa](functions-event-structure.md).   
Anda dapat menggunakan objek acara ini untuk menguji fungsi menggunakan CLI. Tetapi Anda tidak dapat menggunakannya untuk menguji fungsi di CloudFront konsol.

**Untuk membuat objek acara (opsi 1 atau 2)**

1. Masuk ke CloudFront konsol di [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) dan pilih halaman **Fungsi**.

   Pilih fungsi yang ingin Anda uji.

1. Pada halaman detail fungsi, pilih tab **Uji**. 

1. Untuk **jenis Acara**, pilih salah satu opsi berikut:
   + Pilih **permintaan Viewer** jika fungsi memodifikasi permintaan HTTP atau menghasilkan respons berdasarkan permintaan. Bagian **Permintaan** muncul.
   + Pilih **Respons penampil**. Bagian **Permintaan** dan **Respons** muncul. 

1. Lengkapi bidang untuk disertakan dalam acara tersebut. Anda dapat memilih **Edit JSON** untuk melihat JSON mentah.

1. (Opsional) Untuk menyimpan acara, pilih **Simpan** dan di **acara uji Simpan**, masukkan nama lalu pilih **Simpan**.

   Anda juga dapat memilih **Edit JSON** dan menyalin JSON mentah, dan menyimpannya di file Anda sendiri, di luar. CloudFront 

**Untuk membuat objek acara (opsi 3)**

Buat objek acara menggunakan editor teks. Simpan file di direktori tempat komputer Anda dapat terhubung. 

Verifikasi bahwa Anda mengikuti panduan ini:
+ Hilangkan`distributionDomainName`,`distributionId`, dan `requestId` bidang. 
+ Nama header, cookie, dan string kueri harus huruf kecil.

Salah satu opsi untuk membuat objek acara dengan cara ini adalah membuat sampel menggunakan editor visual. Anda dapat yakin bahwa sampel diformat dengan benar. Anda kemudian dapat menyalin JSON mentah dan menempelkannya ke editor teks dan menyimpan file.

Untuk informasi lebih lanjut tentang struktur suatu peristiwa, lihat[Struktur peristiwa](functions-event-structure.md). 

## Uji fungsi
<a name="test-function-step-test"></a>

Anda dapat menguji fungsi di CloudFront konsol atau dengan AWS Command Line Interface (AWS CLI).

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

**Untuk menguji fungsi**

1. Masuk ke CloudFront konsol di [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) dan pilih halaman **Fungsi**.

1. Pilih fungsi yang ingin Anda uji.

1. Pilih tab **Uji**. 

1. Pastikan acara yang benar ditampilkan. Untuk beralih dari acara yang ditampilkan saat ini, pilih acara lain di bidang **Pilih acara uji**.

1. Pilih **fungsi Uji**. Konsol menunjukkan output fungsi, termasuk log fungsi dan pemanfaatan komputasi. 

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

Anda dapat menguji suatu fungsi dengan menggunakan **aws cloudfront test-function** perintah. 

**Untuk menguji fungsi**

1. Buka jendela baris perintah.

1. Jalankan perintah berikut dari direktori yang sama yang berisi file yang ditentukan.

   Contoh ini menggunakan `fileb://` notasi untuk meneruskan dalam file objek acara. Ini juga termasuk jeda baris untuk membuat perintah lebih mudah dibaca. 

   ```
   aws cloudfront test-function \
       --name MaxAge \
       --if-match ETVABCEXAMPLE \
       --event-object fileb://event-maxage-test01.json \
       --stage DEVELOPMENT
   ```
**Catatan**  
Anda mereferensikan fungsi dengan namanya dan ETag (dalam `if-match` parameter). Anda mereferensikan objek acara berdasarkan lokasinya di sistem file Anda.
Panggung bisa `DEVELOPMENT` atau`LIVE`.

   Ketika perintah berhasil, Anda melihat output seperti berikut ini.

   ```
   TestResult:
     ComputeUtilization: '21'
     FunctionErrorMessage: ''
     FunctionExecutionLogs: []
     FunctionOutput: '{"response":{"headers":{"cloudfront-functions":{"value":"generated-by-CloudFront-Functions"},"location":{"value":"https://aws.amazon.com/cloudfront/"}},"statusDescription":"Found","cookies":{},"statusCode":302}}'
     FunctionSummary:
       FunctionConfig:
         Comment: MaxAge function
         Runtime: cloudfront-js-2.0
         KeyValueStoreAssociations= \
         {Quantity=1, \
         Items=[{KeyValueStoreARN='arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111'}]} \
       FunctionMetadata:
         CreatedTime: '2021-04-18T20:38:56.915000+00:00'
         FunctionARN: arn:aws:cloudfront::111122223333:function/MaxAge
         LastModifiedTime: '2023-17-20T10:38:57.057000+00:00'
         Stage: DEVELOPMENT
       Name: MaxAge
       Status: UNPUBLISHED
   ```

------

**Catatan**  
`FunctionExecutionLogs` berisi daftar baris log yang ditulis fungsi dalam pernyataan `console.log()` (jika ada).
`ComputeUtilization`berisi informasi tentang menjalankan fungsi Anda. Lihat [Memahami pemanfaatan komputasi](#compute-utilization).
`FunctionOutput` berisi objek peristiwa yang dikembalikan fungsi. 

## Memahami pemanfaatan komputasi
<a name="compute-utilization"></a>

**Penggunaan komputasi** adalah jumlah waktu yang dibutuhkan fungsi untuk menjalankan sebagai persentase dari waktu maksimum yang diizinkan. Misalnya, nilai 35 berarti fungsi selesai pada 35% dari waktu maksimum yang diizinkan.

Jika suatu fungsi terus menerus melebihi waktu maksimum yang diizinkan, CloudFront membatasi fungsi tersebut. Daftar berikut menjelaskan kemungkinan fungsi terhambat berdasarkan nilai pemanfaatan komputasi.

**Nilai pemanfaatan komputasi:**
+ **1 — 50** — Fungsinya nyaman di bawah waktu maksimum yang diizinkan dan harus berjalan tanpa pelambatan.
+ **51 — 70** — Fungsi mendekati waktu maksimum yang diizinkan. Pertimbangkan untuk mengoptimalkan kode fungsi.
+ **71 — 100** — Fungsi ini sangat dekat dengan atau melebihi waktu maksimum yang diizinkan. CloudFront kemungkinan akan membatasi fungsi ini jika Anda mengaitkannya dengan distribusi.