

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 鍵值存放區的協助程式方法
<a name="functions-custom-methods"></a>

**注意**  
CloudFront Functions 的鍵值存放區 helper 方法呼叫不會觸發 AWS CloudTrail 資料事件。這些事件不會記錄在 CloudTrail 事件歷史記錄中。如需詳細資訊，請參閱[使用 記錄 Amazon CloudFront API 呼叫 AWS CloudTrail](logging_using_cloudtrail.md)。

如果您使用 [CloudFront 鍵值存放區](kvs-with-functions.md)在您建立的函數中包含鍵值，則本節內容適用。CloudFront Functions 具有的模組可提供三種協助程式方法來讀取鍵值存放區中的值。

若要在函數程式碼中使用此模組，請確定您已[將索引鍵值存放區與函數建立關聯](kvs-with-functions-associate.md)。

接著，在函數程式碼的第一行中包含下列陳述式：

```
import cf from 'cloudfront';
const kvsHandle = cf.kvs();
```



## `get()` 方法
<a name="functions-custom-methods-get"></a>

使用此方法傳回您指定的鍵名稱的鍵值。

**請求**

```
get("key", options);
```
+ `key`：需要擷取其值的鍵名稱
+ `options`：有一個選項，`format`。它可以確保函數正確解析資料。可能的值如下：
  + `string`：(預設值) 以 UTF8 編碼
  + `json` 
  + `bytes`：原始二進位資料緩衝區

**請求範例**

```
const value = await kvsHandle.get("myFunctionKey", { format: "string"});
```

**回應**

回應是 `promise`，會以使用 `options` 請求的格式解析為值。根據預設，值會以字串傳回。

### 錯誤處理
<a name="error-handling-exists-method"></a>

當您請求的鍵不存在於關聯的鍵值存放區時，`get()` 方法會傳回錯誤。若要管理此使用案例，您可以將 `try` 和 `catch` 區塊新增至程式碼。

**警告**  
使用 promise 組合器 (例如 `Promise.all`、`Promise.any`) 和 promise 鏈接方法 (例如 `then` 和 `catch`) 可能需要高函數記憶體用量。如果您的函數超過[函數記憶體配額上限](cloudfront-limits.md#limits-functions)，則無法執行。為了避免此錯誤，建議您依序或在迴圈中使用 `await` 語法來請求多重值。  
**範例**  

```
var value1 = await kvs.get('key1');
var value2 = await kvs.get('key2');
```
目前，使用 promise 組合器取得多重值並不會改善效能，範例如下。  

```
var values = await Promise.all([kvs.get('key1'), kvs.get('key2'),]);
```

## `exists()` 方法
<a name="functions-custom-methods-exists"></a>

使用此方法來識別鍵是否存在於鍵值存放區中。

**請求**

```
exists("key");
```

**請求範例**

```
const exist = await kvsHandle.exists("myFunctionkey");
```

**回應**

回應是傳回布林值 (`true` 或 `false`) 的 `promise`。此值指定鍵是否存在於鍵值存放區中。

## `meta()` 方法
<a name="functions-custom-methods-meta"></a>

此方法會傳回有關鍵值存放區的中繼資料。

**請求**

```
meta();
```

**請求範例**

```
const meta = await kvsHandle.meta();
```

**回應**

回應是一個 `promise`，可解析為具有以下屬性的物件：
+ `creationDateTime`：鍵值存放區建立的日期和時間，以 ISO 8601 格式表示。
+ `lastUpdatedDateTime`：上次從來源同步的鍵值存放區的日期和時間，以 ISO 8601 格式表示。該值不包括到邊緣的傳播時間。
+ `keyCount`：上次從來源同步後 KVS 中的總鍵數。

**回應範例**

```
{keyCount:3,creationDateTime:2023-11-30T23:07:55.765Z,lastUpdatedDateTime:2023-12-15T03:57:52.411Z}
```