

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

# Bekerja dengan toko nilai kunci
<a name="kvs-with-functions-kvs"></a>

Anda harus membuat penyimpanan nilai kunci untuk menahan pasangan kunci-nilai yang ingin Anda gunakan di CloudFront Functions. 

Setelah Anda membuat penyimpanan nilai kunci dan menambahkan pasangan kunci-nilai, Anda dapat menggunakan nilai kunci dalam kode CloudFront fungsi Anda. 

Untuk memulai, lihat topik berikut: 

**Topics**
+ [Buat penyimpanan nilai kunci](kvs-with-functions-create.md)
+ [Kaitkan penyimpanan nilai kunci dengan fungsi](kvs-with-functions-associate.md)
+ [Perbarui penyimpanan nilai kunci](kvs-with-functions-edit.md)
+ [Dapatkan referensi ke penyimpanan nilai kunci](kvs-with-functions-get-reference.md)
+ [Hapus penyimpanan nilai kunci](kvs-with-functions-delete.md)
+ [Format file untuk pasangan nilai kunci](kvs-with-functions-create-s3-kvp.md)

**catatan**  
 JavaScript Runtime 2.0 menyertakan beberapa metode pembantu untuk bekerja dengan nilai-nilai kunci dalam kode fungsi. Untuk informasi selengkapnya, lihat [Metode pembantu untuk penyimpanan nilai kunci](functions-custom-methods.md).

# Buat penyimpanan nilai kunci
<a name="kvs-with-functions-create"></a>



Anda dapat membuat penyimpanan nilai kunci dan pasangan nilai kunci-nya secara bersamaan. Anda juga dapat membuat penyimpanan nilai kunci kosong sekarang dan kemudian menambahkan pasangan kunci-nilai nanti. 

**catatan**  
Jika Anda menentukan sumber data dari bucket Amazon S3, Anda harus memiliki izin `s3:GetObject` dan `s3:GetBucketLocation` izin untuk bucket tersebut. Jika Anda tidak memiliki izin ini, tidak CloudFront dapat berhasil membuat penyimpanan nilai kunci Anda.

Putuskan apakah Anda ingin menambahkan pasangan kunci-nilai pada saat yang sama ketika Anda membuat penyimpanan nilai kunci. Anda dapat mengimpor pasangan nilai kunci dengan menggunakan CloudFront konsol, CloudFront API, atau. AWS SDKs Namun, Anda hanya dapat mengimpor file pasangan nilai kunci saat Anda *awalnya* membuat penyimpanan nilai kunci. 

Untuk membuat file pasangan kunci-nilai, lihat. [Format file untuk pasangan nilai kunci](kvs-with-functions-create-s3-kvp.md) 

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

**Untuk membuat penyimpanan nilai kunci**

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

1. Pilih **KeyValueStores**tab, lalu pilih **Buat KeyValueStore**.

1. Masukkan nama dan deskripsi opsional untuk penyimpanan nilai kunci. 

1. **URI S3** lengkap: 
   + Jika Anda memiliki file pasangan nilai kunci, masukkan path ke bucket Amazon S3 tempat Anda menyimpan file. 
   + Biarkan bidang ini kosong jika Anda berencana memasukkan pasangan kunci-nilai secara manual. 

1. Pilih **Buat**. Penyimpanan nilai kunci sekarang ada.

   Halaman detail untuk penyimpanan nilai kunci baru muncul. Informasi pada halaman termasuk ID dan ARN dari penyimpanan nilai kunci. 
   + ID adalah string acak karakter yang unik di Anda Akun AWS. 
   + ARN memiliki sintaks ini:

     *Akun AWS*`:key-value-store/`*the key value stores ID*

1. Lihatlah bagian **Pasangan nilai kunci**. Jika Anda mengimpor file, bagian ini menunjukkan beberapa pasangan kunci-nilai. Anda dapat melakukan tindakan berikut:
   + Jika Anda mengimpor file, Anda juga dapat menambahkan lebih banyak nilai secara manual. 
   + Jika Anda tidak mengimpor file dari bucket Amazon S3, dan jika Anda ingin menambahkan pasangan nilai kunci sekarang, Anda dapat menyelesaikan langkah berikutnya.
   + Anda dapat melewati langkah ini dan menambahkan pasangan kunci-nilai nanti. 

1. Untuk menambahkan pasangan sekarang:

   1. Pilih **Tambahkan pasangan kunci-nilai**. 

   1. Pilih **Tambah pasangan** dan masukkan nama dan nilai. Ulangi langkah ini untuk menambahkan lebih banyak pasangan.

   1. Setelah selesai, pilih **Simpan perubahan** untuk menyimpan semua pasangan nilai kunci di penyimpanan nilai kunci. Pada kotak dialog yang muncul, pilih **Selesai**.

1. Untuk mengaitkan penyimpanan nilai kunci dengan fungsi sekarang, selesaikan bagian **Fungsi terkait**. Untuk informasi selengkapnya, lihat [Buat fungsi](create-function.md) atau [Perbarui fungsi](update-function.md). 

   Anda juga dapat mengaitkan fungsi nanti, baik dari halaman detail penyimpanan nilai kunci ini, atau dari halaman detail fungsi.

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

**Untuk membuat penyimpanan nilai kunci**
+ Jalankan perintah berikut untuk membuat penyimpanan nilai kunci dan mengimpor pasangan nilai kunci dari bucket Amazon S3.

  ```
  aws cloudfront create-key-value-store \
      --name=keyvaluestore1 \
      --comment="This is my key value store file" \
      --import-source=SourceType=S3,SourceARN=arn:aws:s3:::amzn-s3-demo-bucket1/kvs-input.json
  ```

  **Respons**

  ```
  {
      "ETag": "ETVABCEXAMPLE",
      "Location": "https://cloudfront.amazonaws.com/2020-05-31/key-value-store/arn:aws:cloudfront::123456789012:key-value-store/8aa76c93-3198-462c-aaf6-example",
      "KeyValueStore": {
          "Name": "keyvaluestore1",
          "Id": "8aa76c93-3198-462c-aaf6-example",
          "Comment": "This is my key value store file",
          "ARN": "arn:aws:cloudfront::123456789012:key-value-store/8aa76c93-3198-462c-aaf6-example",
          "Status": "PROVISIONING",
          "LastModifiedTime": "2024-08-06T22:19:10.813000+00:00"
      }
  }
  ```

------
#### [ API ]

**Untuk membuat penyimpanan nilai kunci**

1. Gunakan [CloudFrontCreateKeyValueStore](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateKeyValueStore.html)operasi. Operasi ini membutuhkan beberapa parameter:
   + A `name` dari penyimpan nilai kunci.
   + `comment`Parameter yang menyertakan komentar.
   + `import-source`Parameter yang memungkinkan Anda mengimpor pasangan nilai kunci dari file yang disimpan di bucket Amazon S3. Anda dapat mengimpor dari file hanya ketika Anda pertama kali membuat penyimpanan nilai kunci. Untuk informasi tentang struktur file, lihat[Format file untuk pasangan nilai kunci](kvs-with-functions-create-s3-kvp.md).

Respons operasi mencakup informasi berikut:
+ Nilai yang diteruskan dalam permintaan, termasuk nama yang Anda tetapkan.
+ Data seperti waktu pembuatan.
+ Sebuah `ETag` (misalnya,`ETVABCEXAMPLE`), ARN yang menyertakan nama penyimpanan nilai kunci (misalnya,`arn:aws:cloudfront::123456789012:key-value-store/keyvaluestore1`). 

  Anda akan menggunakan beberapa kombinasi dari`ETag`, ARN, dan nama untuk bekerja dengan penyimpanan nilai kunci secara terprogram.

------

## Status penyimpanan nilai kunci
<a name="key-value-store-status"></a>

Saat Anda membuat penyimpanan nilai kunci, penyimpanan data dapat memiliki nilai status berikut.


****  

| Nilai | Deskripsi | 
| --- | --- | 
|  **Penyediaan**  |  Penyimpanan nilai kunci telah dibuat dan CloudFront sedang memproses sumber data yang Anda tentukan.  | 
|  **Siap**  |  Penyimpanan nilai kunci dibuat dan CloudFront berhasil memproses sumber data yang Anda tentukan.  | 
|  **Impor gagal**  |  CloudFront tidak dapat memproses sumber data yang Anda tentukan. Status ini dapat muncul jika format file Anda tidak valid atau melebihi batas ukuran. Untuk informasi selengkapnya, lihat [Format file untuk pasangan nilai kunci](kvs-with-functions-create-s3-kvp.md).  | 

# Kaitkan penyimpanan nilai kunci dengan fungsi
<a name="kvs-with-functions-associate"></a>

Setelah Anda membuat penyimpanan nilai kunci Anda, Anda dapat memperbarui fungsi Anda untuk mengaitkannya dengan penyimpanan nilai kunci Anda. Anda harus membuat asosiasi ini untuk menggunakan pasangan kunci-nilai dari toko itu dalam fungsi itu. Aturan-aturan berikut berlaku:
+ Sebuah fungsi hanya dapat memiliki satu penyimpanan nilai kunci
+ Anda dapat mengaitkan penyimpanan nilai kunci yang sama dengan beberapa fungsi

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

**Untuk mengaitkan penyimpanan nilai kunci dengan 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 nama fungsi.

1. Buka KeyValueStore bagian **Associate** dan pilih **Associate existing KeyValueStore**.

1. **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.

1. Untuk menentukan penyimpanan nilai kunci yang berbeda, pilih **Perbarui terkait KeyValueStore**, pilih nama penyimpanan nilai kunci lainnya, lalu pilih **Associate KeyValueStore**.

Untuk informasi selengkapnya, lihat [Perbarui fungsi](update-function.md).

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

**Untuk mengaitkan penyimpanan nilai kunci dengan fungsi**
+ Jalankan perintah berikut untuk memperbarui `MaxAge` fungsi dan mengaitkan sumber daya penyimpanan nilai kunci.

  ```
  aws cloudfront update-function \
      --name MaxAge \
      --function-config '{"Comment":"Max Age 2 years","Runtime":"cloudfront-js-2.0","KeyValueStoreAssociations":{"Quantity":1,"Items":[{"KeyValueStoreARN":"arn:aws:cloudfront::123456789012:key-value-store/8aa76c93-3198-462c-aaf6-example"}]}}' \
      --function-code fileb://function-max-age-v1.js \
      --if-match ETVABCEXAMPLE
  ```
+ Untuk mengaitkan penyimpanan nilai kunci dengan fungsi, tentukan `KeyValueStoreAssociations` parameter dan nilai kunci menyimpan ARN. 
+ Untuk mengubah asosiasi, tentukan ARN penyimpanan nilai kunci lainnya. 
+ Untuk menghapus asosiasi, hapus `KeyValueStoreAssociations` parameter. 

Untuk informasi selengkapnya, lihat [Perbarui fungsi](update-function.md).

------
#### [ API ]

**Untuk mengaitkan penyimpanan nilai kunci dengan fungsi**
+ Gunakan Operasi API [UpdateFunction](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateFunction.html). Untuk informasi selengkapnya, lihat [Perbarui fungsi](update-function.md).

------

**Catatan**  
Jika Anda memodifikasi penyimpanan nilai kunci tanpa mengubah pasangan nilai kunci, atau jika Anda hanya memodifikasi pasangan nilai kunci di penyimpanan nilai kunci, Anda tidak perlu mengaitkan penyimpanan nilai kunci lagi. Anda juga tidak perlu mempublikasikan ulang fungsinya.  
Namun, kami menyarankan Anda menguji fungsi untuk memverifikasi bahwa itu berfungsi seperti yang diharapkan. Untuk informasi selengkapnya, lihat [Fungsi uji](test-function.md).
Anda dapat melihat semua fungsi yang menggunakan penyimpanan nilai kunci tertentu. Di CloudFront konsol, pilih halaman detail penyimpanan nilai kunci. 

# Perbarui penyimpanan nilai kunci
<a name="kvs-with-functions-edit"></a>

Saat memperbarui penyimpanan nilai kunci, Anda dapat mengubah pasangan nilai kunci, atau mengubah asosiasi antara penyimpanan nilai kunci dan fungsi.

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

**Untuk memperbarui penyimpanan nilai kunci**

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

1. Pilih **KeyValueStores**tab.

1.  Pilih penyimpanan nilai kunci yang ingin Anda perbarui. 
   + Untuk memperbarui pasangan kunci-nilai, pilih **Edit** di bagian **Pasangan nilai kunci**. Anda dapat menambahkan atau menghapus pasangan kunci-nilai apa pun. Anda juga dapat mengubah nilai untuk pasangan kunci-nilai yang ada. Setelah Anda selesai, pilih **Simpan perubahan**.
   + Untuk memperbarui asosiasi untuk penyimpanan nilai kunci ini, pilih **Buka fungsi**. Untuk informasi selengkapnya, lihat [Kaitkan penyimpanan nilai kunci dengan fungsi](kvs-with-functions-associate.md).

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

**Untuk memperbarui penyimpanan nilai kunci**

1. **Mengubah pasangan kunci-nilai** — Anda dapat menambahkan lebih banyak pasangan kunci-nilai, menghapus satu atau beberapa pasangan kunci-nilai, dan mengubah nilai pasangan kunci-nilai yang ada. Untuk informasi selengkapnya, lihat [Bekerja dengan data nilai kunci](kvs-with-functions-kvp.md).

1. **Mengubah asosiasi fungsi untuk penyimpanan nilai kunci** — Untuk memperbarui fungsi asosiasi untuk penyimpanan nilai kunci, lihat[Kaitkan penyimpanan nilai kunci dengan fungsi](kvs-with-functions-associate.md). 
**Tip**  
Anda akan membutuhkan ARN dari toko nilai kunci. Untuk informasi selengkapnya, lihat [Dapatkan referensi ke penyimpanan nilai kunci](kvs-with-functions-get-reference.md).

------
#### [ API ]

**Untuk memperbarui penyimpanan nilai kunci**

1. **Mengubah pasangan kunci-nilai** — Anda dapat menambahkan lebih banyak pasangan kunci-nilai, menghapus satu atau beberapa pasangan kunci-nilai, dan mengubah nilai pasangan kunci-nilai yang ada. Untuk informasi selengkapnya, lihat [Bekerja dengan data nilai kunci](kvs-with-functions-kvp.md).

1. **Mengubah asosiasi fungsi untuk penyimpanan nilai kunci** — Untuk memperbarui asosiasi fungsi untuk penyimpanan nilai kunci, gunakan operasi [UpdateFunction](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateFunction.html)API. Untuk informasi selengkapnya, lihat [Perbarui fungsi](update-function.md). 
**Tip**  
Anda akan membutuhkan ARN dari toko nilai kunci. Untuk informasi selengkapnya, lihat [Dapatkan referensi ke penyimpanan nilai kunci](kvs-with-functions-get-reference.md).

------

# Dapatkan referensi ke penyimpanan nilai kunci
<a name="kvs-with-functions-get-reference"></a>

Untuk bekerja dengan toko nilai kunci secara terprogram, Anda memerlukan `ETag` dan nama penyimpanan nilai kunci. 

Untuk mendapatkan kedua nilai tersebut, Anda dapat menggunakan AWS Command Line Interface (AWS CLI) atau CloudFront API.

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

**Untuk mendapatkan referensi penyimpanan nilai kunci**

1. Untuk mengembalikan daftar penyimpanan nilai kunci, jalankan perintah berikut Temukan nama penyimpanan nilai kunci yang ingin Anda ubah.

   ```
   aws cloudfront list-key-value-stores
   ```

1. Dari respons, temukan nama penyimpanan nilai kunci yang Anda inginkan.

   **Respons**

   ```
   {
       "KeyValueStoreList": {
           "Items": [
               {
                   "Name": "keyvaluestore3",
                   "Id": "37435e19-c205-4271-9e5c-example3",
                   "ARN": "arn:aws:cloudfront::123456789012:key-value-store/37435e19-c205-4271-9e5c-example3",
                   "Status": "READY",
                   "LastModifiedTime": "2024-05-08T14:50:18.876000+00:00"
               },
               {
                   "Name": "keyvaluestore2",
                   "Id": "47970d59-6408-474d-b850-example2",
                   "ARN": "arn:aws:cloudfront::123456789012:key-value-store/47970d59-6408-474d-b850-example2",
                   "Status": "READY",
                   "LastModifiedTime": "2024-05-30T21:06:22.113000+00:00"
               },
               {
                   "Name": "keyvaluestore1",
                   "Id": "8aa76c93-3198-462c-aaf6-example",
                   "ARN": "arn:aws:cloudfront::123456789012:key-value-store/8aa76c93-3198-462c-aaf6-example",
                   "Status": "READY",
                   "LastModifiedTime": "2024-08-06T22:19:30.510000+00:00"
               }
           ]
       }
   }
   ```

1. Jalankan perintah berikut untuk mengembalikan `ETag` untuk penyimpanan nilai kunci yang ditentukan.

   ```
   aws cloudfront describe-key-value-store \
       --name=keyvaluestore1
   ```

   **Respons**

   ```
   {
       "ETag": "E3UN6WX5RRO2AG",
       "KeyValueStore": {
           "Name": "keyvaluestore1",
           "Id": "8aa76c93-3198-462c-aaf6-example",
           "Comment": "This is an example KVS",
           "ARN": "arn:aws:cloudfront::123456789012:key-value-store/8aa76c93-3198-462c-aaf6-example",
           "Status": "READY",
           "LastModifiedTime": "2024-08-06T22:19:30.510000+00:00"
       }
   }
   ```

------
#### [ API ]

**Untuk mendapatkan referensi penyimpanan nilai kunci**

1. Gunakan operasi [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListKeyValueStores.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListKeyValueStores.html)API untuk mengembalikan daftar penyimpanan nilai kunci. Temukan nama penyimpanan nilai kunci yang ingin Anda ubah. 

1. Gunakan operasi [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DescribeKeyValueStore.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DescribeKeyValueStore.html)API dan tentukan nama penyimpanan nilai kunci yang Anda kembalikan dari langkah sebelumnya. 

------

Respons termasuk UUID, ARN dari penyimpanan nilai kunci, dan penyimpanan nilai kunci. `ETag`
+ An`ETag`, seperti `E3UN6WX5RRO2AG`
+ UUID adalah 128 bit, seperti `8aa76c93-3198-462c-aaf6-example`
+ ARN mencakup Akun AWS angka, konstanta`key-value-store`, dan UUID, seperti contoh berikut:

  `arn:aws:cloudfront::123456789012:key-value-store/8aa76c93-3198-462c-aaf6-example`

Untuk informasi lebih lanjut tentang `DescribeKeyValueStore` operasi, lihat[Tentang CloudFront KeyValueStore](kvs-with-functions-kvp.md#kvs-with-functions-api-describe).

# Hapus penyimpanan nilai kunci
<a name="kvs-with-functions-delete"></a>

Anda dapat menghapus penyimpanan nilai kunci Anda dengan menggunakan CloudFront konsol Amazon atau API.

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

**Untuk menghapus penyimpanan nilai kunci**

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

1. Pilih nama fungsi.

1. Di bawah KeyValueStore bagian **Terkait**, verifikasi apakah penyimpanan nilai kunci dikaitkan dengan fungsi tersebut. Jika ya, hapus asosiasi dengan memilih **Disassociate KeyValueStore** dan kemudian pilih **Hapus asosiasi**.

1. Di panel navigasi, pilih halaman **Fungsi** dan kemudian pilih **KeyValueStores**tab. 

1. Pilih penyimpanan nilai kunci yang ingin Anda hapus dan kemudian pilih **Hapus**.

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

**Untuk menghapus penyimpanan nilai kunci**

1. Dapatkan `ETag` dan nama toko nilai kunci. Untuk informasi selengkapnya, lihat [Dapatkan referensi ke penyimpanan nilai kunci](kvs-with-functions-get-reference.md).

1. Verifikasi apakah penyimpanan nilai kunci dikaitkan dengan fungsi. Jika ya, hapus asosiasi. Untuk informasi lebih lanjut tentang kedua langkah ini, lihat[Perbarui fungsi](update-function.md).

1. Setelah Anda memiliki nama dan `ETag` penyimpanan nilai kunci dan tidak lagi terkait dengan fungsi, Anda dapat menghapusnya.

   Jalankan perintah berikut untuk menghapus penyimpanan nilai kunci yang ditentukan.

   ```
   aws cloudfront delete-key-value-store \
       --name=keyvaluestore1 \
       --if-match=E3UN6WX5RRO2AG
   ```

------
#### [ API ]

**Untuk menghapus penyimpanan nilai kunci**

1. Dapatkan `ETag` dan nama toko nilai kunci. Untuk informasi selengkapnya, lihat [Dapatkan referensi ke penyimpanan nilai kunci](kvs-with-functions-get-reference.md).

1. Verifikasi apakah penyimpanan nilai kunci dikaitkan dengan fungsi. Jika ya, hapus asosiasi. Untuk informasi lebih lanjut tentang kedua langkah ini, lihat[Perbarui fungsi](update-function.md).

1. Untuk menghapus penyimpanan nilai kunci, gunakan operasi CloudFront [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DeleteKeyValueStore.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DeleteKeyValueStore.html)API.

------

# Format file untuk pasangan nilai kunci
<a name="kvs-with-functions-create-s3-kvp"></a>

Saat Anda membuat file yang dikodekan UTF-8, gunakan format JSON berikut:

```
{
  "data":[
    {
      "key":"key1",
      "value":"value"
    },
    {
      "key":"key2",
      "value":"value"
    }
  ]
}
```

File Anda tidak dapat menyertakan kunci duplikat. Jika Anda menentukan file yang tidak valid di bucket Amazon S3, Anda dapat memperbarui file tersebut untuk menghapus duplikat apa pun dan kemudian mencoba membuat penyimpanan nilai kunci Anda lagi.

Untuk informasi selengkapnya, lihat [Buat penyimpanan nilai kunci](kvs-with-functions-create.md).

**catatan**  
File untuk sumber data Anda dan pasangan nilai kunci-nya memiliki batasan berikut:  
Ukuran file — 5 MB
Ukuran kunci - 512 karakter
Ukuran nilai - 1024 karakter