

# キーバリューストアのヘルパーメソッド
<a name="functions-custom-methods"></a>

**注記**  
CloudFront Functions からのキーバリューストアのヘルパーメソッド呼び出しは、AWS CloudTrail データイベントをトリガーしません。これらのイベントは CloudTrail イベント履歴には記録されません。詳細については、「[AWS CloudTrail を使用した Amazon CloudFront API コールのログ記録](logging_using_cloudtrail.md)」を参照してください。

このセクションは、[CloudFront キーバリューストア](kvs-with-functions.md)を使用して作成する関数にキー値を含める場合に適用されます。CloudFront Functions には、キーバリューストアから値を読み取る 3 つのヘルパーメソッドを提供するモジュールがあります。

このモジュールを関数コードで使用するには、関数に[キーバリューストアを関連付ける](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`: 1 つのオプション `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");
```

**応答**

レスポンスは `promise` であり、ブール値 (`true` または `false`) を返します。この値は、キーがキーバリューストアに存在するかどうかを示します。

## `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}
```