

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

# Buat fungsi
<a name="create-function"></a>

Anda membuat fungsi dalam dua tahap: 

1. Buat kode fungsi sebagai JavaScript. Anda dapat menggunakan contoh default dari CloudFront konsol atau menulis sendiri. Untuk informasi selengkapnya, lihat topik berikut:
   + [Tulis kode fungsi](writing-function-code.md)
   + [CloudFront Fungsi struktur acara](functions-event-structure.md)
   + [CloudFront Contoh fungsi untuk CloudFront](service_code_examples_cloudfront_functions_examples.md)

1. Gunakan CloudFront untuk membuat fungsi dan sertakan kode Anda. Kode ada di dalam fungsi (bukan sebagai referensi).

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

**Untuk membuat 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 **Buat fungsi**.

1. Masukkan nama fungsi yang unik di dalam Akun AWS, pilih JavaScript versi, lalu pilih **Lanjutkan**. Halaman detail untuk fungsi baru muncul.
**catatan**  
Untuk menggunakan [pasangan kunci-nilai](kvs-with-functions.md) dalam fungsi, Anda harus memilih JavaScript runtime 2.0.  
Jika Anda menemukan kesalahan `TaggingConflict` (HTTP 409) saat membuat fungsi dengan tag, tunggu beberapa menit dan coba lagi, atau buat fungsi tanpa tag pada awalnya dan tambahkan sesudahnya.

1. Di bagian **Kode fungsi**, pilih tab **Build** dan masukkan kode fungsi Anda. Kode contoh yang disertakan dalam tab **Build** mengilustrasikan sintaks dasar untuk kode fungsi.

1. Pilih **Simpan perubahan**.

1. Jika kode fungsi menggunakan pasangan kunci-nilai, Anda harus mengaitkan penyimpanan nilai kunci. 

   Anda dapat mengaitkan penyimpanan nilai kunci saat pertama kali membuat fungsi. Atau, Anda dapat mengaitkannya nanti, dengan [memperbarui fungsi](update-function.md). 

   Untuk mengaitkan penyimpanan nilai kunci sekarang, ikuti langkah-langkah berikut:
   + Buka KeyValueStore bagian **Associate** dan pilih **Associate existing KeyValueStore**.
   + **Pilih penyimpanan nilai kunci yang berisi pasangan kunci-nilai dalam fungsi, lalu pilih Associate. KeyValueStore**

   CloudFront segera mengaitkan toko dengan fungsinya. Anda tidak perlu menyimpan fungsinya.

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

Jika Anda menggunakan CLI, Anda biasanya pertama membuat kode fungsi dalam file, dan kemudian membuat fungsi dengan. AWS CLI

**Untuk membuat fungsi**

1. Buat kode fungsi dalam file, dan simpan di direktori tempat komputer Anda dapat terhubung. 

1. Jalankan perintah seperti yang ditunjukkan pada contoh. Contoh ini menggunakan `fileb://` notasi untuk meneruskan file. Ini juga termasuk jeda baris untuk membuat perintah lebih mudah dibaca. 

   ```
   aws cloudfront create-function \
       --name MaxAge \
       --function-config '{"Comment":"Max Age 2 years","Runtime":"cloudfront-js-2.0","KeyValueStoreAssociations":{"Quantity":1,"Items":[{"KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}]}}' \
       --function-code fileb://function-max-age-v1.js
   ```
**Catatan**  
`Runtime`— Versi JavaScript. Untuk menggunakan [pasangan nilai kunci](kvs-with-functions.md) dalam fungsi, Anda harus menentukan versi 2.0.
`KeyValueStoreAssociations`— Jika fungsi Anda menggunakan pasangan kunci-nilai, Anda dapat mengaitkan penyimpanan nilai kunci saat pertama kali membuat fungsi. Atau, Anda dapat mengaitkannya nanti, dengan menggunakan`update-function`. `Quantity`Itu selalu `1` karena setiap fungsi hanya dapat memiliki satu penyimpanan nilai kunci yang terkait dengannya.

   Ketika perintah berhasil, Anda melihat output seperti berikut ini.

   ```
   ETag: ETVABCEXAMPLE
   FunctionSummary:
     FunctionConfig:
       Comment: Max Age 2 years
       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-11-19T20:38:56.915000+00:00'
       Stage: DEVELOPMENT
     Name: MaxAge
     Status: UNPUBLISHED
   Location: https://cloudfront.amazonaws.com/2020-05-31/function/arn:aws:cloudfront:::function/MaxAge
   ```

   Sebagian besar informasi diulang dari permintaan. Informasi lain ditambahkan oleh CloudFront.
**Catatan**  
`ETag`— Nilai ini berubah setiap kali Anda memodifikasi penyimpanan nilai kunci. Anda menggunakan nilai ini dan nama fungsi untuk mereferensikan fungsi di masa depan. Pastikan Anda selalu menggunakan arus`ETag`.
`FunctionARN`— ARN untuk fungsi Anda CloudFront.
111122223333 —. Akun AWS
`Stage`— Tahap fungsi (`LIVE`atau`DEVELOPMENT`). 
`Status`— Status fungsi (`PUBLISHED`atau`UNPUBLISHED`).

------

Setelah Anda membuat fungsi, itu ditambahkan ke `DEVELOPMENT` panggung. Kami menyarankan Anda [menguji fungsi Anda](test-function.md) sebelum [mempublikasikannya](publish-function.md). Setelah Anda mempublikasikan fungsi Anda, fungsi berubah ke `LIVE` panggung.

**TaggingConflict kesalahan saat membuat fungsi**  
CloudFront Fungsi digunakan kembali ARNs untuk fungsi dengan nama yang sama. Anda mungkin mengalami kesalahan `TaggingConflict` (HTTP 409) saat membuat fungsi dengan tag. Ini dapat terjadi dalam skenario berikut:  
**Setelah menghapus fungsi** — Membuat ulang fungsi dengan nama dan tag yang sama segera setelah penghapusan.
**Setelah upaya pembuatan gagal** — Jika permintaan pembuatan sebelumnya gagal (misalnya, karena parameter tidak valid, asosiasi KVS tidak valid, atau pengembalian tumpukan yang gagal). CloudFormation 
Jika Anda menerima `TaggingConflict` kesalahan, Anda dapat:  
Tunggu beberapa menit dan coba lagi operasi.
Gunakan nama fungsi yang berbeda. Ini menghindari konflik penggunaan kembali ARN sepenuhnya.
Jika template Anda membuat fungsi KeyValueStore dan fungsi yang mereferensikannya, tambahkan eksplisit `DependsOn` untuk memastikan KVS sepenuhnya disediakan sebelum fungsi dibuat.