

# 一般的なヘルパーメソッド
<a name="general-helper-methods"></a>

このページでは、CloudFront Functions 内の追加のヘルパーメソッドについて説明します。これらのメソッドを使用するには、JavaScript ランタイム 2.0 を使用して CloudFront 関数を作成します。

```
import cf from 'cloudfront';
```

詳細については、「[CloudFront Functions の JavaScript ランタイム 2.0 の機能](functions-javascript-runtime-20.md)」を参照してください。

## `edgeLocation` メタデータ
<a name="edge-location-metadata"></a>

このメソッドは、`cloudfront` モジュールの使用が必要です。

**注記**  
このメソッドは、ビューワーリクエスト関数にのみ使用できます。ビューワーレスポンス関数の場合、このメソッドは空です。

この JavaScript オブジェクトを使用して、エッジロケーションの空港コード、予想される[リージョナルエッジキャッシュ](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches)リージョン、またはリクエストの処理に使用される CloudFront サーバーの IP アドレスを取得します。このメタデータは、ビューワーリクエストイベントトリガーでのみ使用できます。

```
cf.edgeLocation = {
    name: SEA
    serverIp: 1.2.3.4
    region: us-west-2
}
```

`cf.edgeLocation` オブジェクトには、以下を含めることができます。

**名前**  
リクエストを処理したエッジロケーションの 3 文字の [IATA コード](https://en.wikipedia.org/wiki/IATA_airport_code)。

**serverIp**  
リクエストを処理したサーバーの IPv4 または IPv6 アドレス。

**リージョン**  
キャッシュミスがある場合にリクエストが使用すると*予想される* CloudFront Regional Edge Cache (REC)。予想される REC が使用できず、バックアップ REC がリクエストに使用される場合、この値は更新されません。プライマリ REC と Origin Shield が同じ場所である場合を除き、これには使用されている Origin Shield の場所は含まれません。

**注記**  
CloudFront がオリジンフェイルオーバーを使用するように設定されている場合、CloudFront Functions は 2 回目は呼び出されません。詳細については、「[CloudFront オリジンフェイルオーバーを使用して高可用性を最適化する](high_availability_origin_failover.md)」を参照してください。

## `rawQueryString()` 方法
<a name="raw-query-string-method"></a>

このメソッドに、`cloudFront` モジュールは必要ありません。

`rawQueryString()` メソッドを使用して、解析されていない未変更のクエリ文字列を文字列として取得します。

**[リクエスト**]

```
function handler(event) {
    var request = event.request;
    const qs = request.rawQueryString();
}
```

**レスポンス**

先頭の `?` なしで、受信リクエストの完全なクエリ文字列を文字列値として返します。
+ クエリ文字列はないが、`?` が存在する場合、関数は空の文字列を返します。
+ クエリ文字列がなく、`?` が存在しない場合、関数は `undefined` を返します。

**ケース 1: 完全なクエリ文字列が返された (先頭に `?` なし)**  
受信リクエスト URL: `https://example.com/page?name=John&age=25&city=Boston`  
`rawQueryString()`戻り値 。`"name=John&age=25&city=Boston"`

**ケース 2: 空の文字列が返された (`?` は存在するが、パラメータがない場合)**  
受信リクエスト URL: `https://example.com/page?`  
`rawQueryString()`戻り値 。`""`

**ケース 3: `undefined` が返された (クエリ文字列および `?` なし)**  
受信リクエスト URL: `https://example.com/page`  
`rawQueryString()`戻り値 。`undefined`