

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

# Mengaitkan fungsi dengan distribusi
<a name="associate-function"></a>

Untuk menggunakan fungsi dengan distribusi, Anda mengaitkan fungsi dengan satu atau beberapa perilaku cache dalam distribusi. Anda dapat mengaitkan fungsi dengan beberapa perilaku cache di beberapa distribusi.

Anda dapat mengaitkan fungsi dengan salah satu dari berikut ini:
+ Perilaku cache yang ada
+ Perilaku cache baru dalam distribusi yang ada
+ Perilaku cache baru dalam distribusi baru

Ketika mengaitkan fungsi dengan perilaku cache, Anda harus memilih *Jenis peristiwa*. Jenis acara menentukan kapan CloudFront menjalankan fungsi. 

Anda dapat memilih jenis acara berikut:
+ **Permintaan penampil** - Fungsi berjalan saat CloudFront menerima permintaan dari penampil.
+ **Respons penampil** - Fungsi berjalan sebelum CloudFront mengembalikan respons ke penampil.

Anda tidak dapat menggunakan tipe peristiwa yang menghadap *asal (permintaan asal dan *respons asal**) dengan CloudFront Functions. Sebagai gantinya, Anda dapat menggunakan Lambda @Edge. Untuk informasi selengkapnya, lihat [CloudFront peristiwa yang dapat memicu fungsi Lambda @Edge](lambda-cloudfront-trigger-events.md). 

**catatan**  
Sebelum mengaitkan fungsi, [Publikasikan](publish-function.md) ke tahap `LIVE`.

Anda dapat mengaitkan fungsi dengan distribusi di CloudFront konsol atau dengan AWS Command Line Interface (AWS CLI). Prosedur berikut menunjukkan cara mengaitkan fungsi dengan perilaku cache yang ada. 

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

**Untuk mengaitkan fungsi dengan perilaku cache yang ada**

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

1. Pada halaman **Fungsi**, pilih tab **Publikasikan**.

1. Pilih **fungsi Publikasikan**.

1. Pilih **Tambah asosiasi**. Pada kotak dialog yang muncul, pilih distribusi, jenis peristiwa, dan/atau perilaku cache. 

   Untuk jenis acara, pilih kapan Anda ingin fungsi ini berjalan:
   + **Permintaan Penampil** - Jalankan fungsi setiap kali CloudFront menerima permintaan.
   + **Respons Penampil** - Jalankan fungsi setiap kali CloudFront mengembalikan respons.

1. Untuk menyimpan konfigurasi, pilih **Tambahkan asosiasi**.

CloudFront mengaitkan distribusi dengan fungsi. Tunggu beberapa menit sampai distribusi terkait dapat menyelesaikan penyebaran. Anda dapat memilih **Lihat distribusi** pada halaman detail fungsi untuk memeriksa kemajuan.

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

**Untuk mengaitkan fungsi dengan perilaku cache yang ada**

1. Buka jendela baris perintah.

1. Masukkan perintah berikut untuk menyimpan konfigurasi distribusi untuk distribusi yang perilaku cache-nya ingin Anda kaitkan dengan suatu fungsi. Perintah ini menyimpan konfigurasi distribusi ke file bernama `dist-config.yaml`. Untuk menggunakan perintah ini, lakukan hal berikut:
   + Ganti *`DistributionID`* dengan ID distribusi.
   + Jalankan perintah pada satu garis. Dalam contoh, jeda baris disediakan untuk membuat contoh lebih mudah dibaca.

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

   Ketika perintah berhasil, AWS CLI mengembalikan tidak ada output.

1. Buka file bernama `dist-config.yaml` yang Anda buat. Edit file untuk membuat perubahan berikut.

   1. Ubah nama `ETag` bidang menjadi`IfMatch`, tetapi jangan ubah nilai bidang.

   1. Dalam perilaku cache, temukan objek bernama `FunctionAssociations`. Memperbarui objek ini untuk menambahkan asosiasi fungsi. Sintaks YAML untuk asosiasi fungsi terlihat seperti contoh berikut.
      + Contoh berikut menunjukkan jenis peristiwa permintaan penampil (pemicu). Untuk menggunakan jenis peristiwa respons penampil, ganti `viewer-request` dengan `viewer-response`.
      + Ganti *`arn:aws:cloudfront::111122223333:function/ExampleFunction`* dengan Amazon Resource Name (ARN) dari fungsi yang Anda kaitkan dengan perilaku cache ini. Untuk mendapatkan fungsi ARN, Anda dapat menggunakan perintah **aws cloudfront list-functions**.

      ```
      FunctionAssociations:
        Items:
          - EventType: viewer-request
            FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction
        Quantity: 1
      ```

   1. Setelah melakukan perubahan ini, simpan file.

1. Gunakan perintah berikut untuk memperbarui distribusi guna menambahkan asosiasi fungsi. Untuk menggunakan perintah ini, lakukan hal berikut:
   + Ganti *`DistributionID`* dengan ID distribusi.
   + Jalankan perintah pada satu garis. Dalam contoh, jeda baris disediakan untuk membuat contoh lebih mudah dibaca.

   ```
   aws cloudfront update-distribution \
       --id DistributionID \
       --cli-input-yaml file://dist-config.yaml
   ```

   Setelah perintah berhasil, Anda akan melihat output seperti berikut yang menjelaskan distribusi yang baru saja diperbarui dengan asosiasi fungsi. Contoh output berikut dipotong agar mudah dibaca.

   ```
   Distribution:
     ARN: arn:aws:cloudfront::111122223333:distribution/EBEDLT3BGRBBW
     ... truncated ...
     DistributionConfig:
       ... truncated ...
       DefaultCacheBehavior:
         ... truncated ...
         FunctionAssociations:
           Items:
           - EventType: viewer-request
             FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction
           Quantity: 1
         ... truncated ...
     DomainName: d111111abcdef8.cloudfront.net
     Id: EDFDVBD6EXAMPLE
     LastModifiedTime: '2021-04-19T22:39:09.158000+00:00'
     Status: InProgress
   ETag: E2VJGGQEG1JT8S
   ```

------

Distribusi `Status` berubah menjadi `InProgress` saat distribusi dipindahkan. Ketika konfigurasi distribusi baru mencapai lokasi CloudFront tepi, lokasi tepi itu mulai menggunakan fungsi terkait. Ketika distribusi sepenuhnya digunakan, `Status` perubahan kembali ke`Deployed`. Ini menunjukkan bahwa CloudFront fungsi terkait hidup di semua lokasi CloudFront tepi di seluruh dunia. Ini biasanya memerlukan waktu beberapa menit.