

# Lambda@Edge イベント構造
<a name="lambda-event-structure"></a>

以下のトピックでは、CloudFront がトリガーされたときに Lambda@Edge 関数に渡すリクエストおよびレスポンスイベントオブジェクトについて説明します。

**Topics**
+ [動的オリジン選択](#lambda-event-content-based-routing)
+ [リクエストイベント](#lambda-event-structure-request)
+ [レスポンスイベント](#lambda-event-structure-response)

## 動的オリジン選択
<a name="lambda-event-content-based-routing"></a>

[キャッシュ動作でパスパターン](DownloadDistValuesCacheBehavior.md#DownloadDistValuesPathPattern)を使用すると、リクエストされたオブジェクトのパスと名前 (`images/*.jpg` など) に基づいて、リクエストをオリジンにルーティングできます。Lambda@Edge を使用すると、リクエストヘッダーの値など他のプロパティに基づいても、リクエストをオリジンにルーティングできます。

この動的オリジン選択が便利な状況がいくつかあります。たとえば、グローバルな負荷分散に役立つように、地理的に異なるリージョンのオリジンにリクエストを分散させる場合です。あるいは、機能 (ボット処理、SEO 最適化、認証など) が異なるさまざまなオリジンに、リクエストを選択的にルーティングする場合です。この機能の使用方法を示すコードサンプルについては、「[コンテンツベースの動的オリジンの選択 - 例](lambda-examples.md#lambda-examples-content-based-routing-examples)」を参照してください。

CloudFront のオリジンリクエストイベントで、イベント構造の `origin` オブジェクトには、パスパターンに基づいてリクエストがルーティングされるオリジンに関する情報が含まれます。リクエストを別のオリジンにルーティングするように、`origin` オブジェクトの値を更新できます。`origin` オブジェクトを更新するときに、ディストリビューションのオリジンを定義する必要はありません。Amazon S3 オリジンオブジェクトをカスタムオリジンオブジェクトに置き換えたり、その逆にすることもできます。ただし、カスタムオリジンと Amazon S3 オリジンのどちらか (両方は不可) を通じて、リクエストごとに 1 つのオリジンしか指定できません。

## リクエストイベント
<a name="lambda-event-structure-request"></a>

以下のトピックでは、[ビューワーおよびオリジンリクエストイベント](lambda-cloudfront-trigger-events.md)の Lambda 関数に CloudFront が渡すオブジェクトの構造を示します。これらの例は、本文のない `GET` リクエストを示しています。例に続いて、ビューワーとオリジンリクエストイベントで使用可能なすべてのフィールドのリストを示します。

**Topics**
+ [ビューワーリクエストの例](#example-viewer-request)
+ [オリジンリクエストの例](#example-origin-request)
+ [リクエストイベントフィールド](#request-event-fields)

### ビューワーリクエストの例
<a name="example-viewer-request"></a>

次の例は、ビューワーリクエストイベントオブジェクトを示しています。

```
{
  "Records": [
    {
      "cf": {
        "config": {
          "distributionDomainName": "d111111abcdef8.cloudfront.net",
          "distributionId": "EDFDVBD6EXAMPLE",
          "eventType": "viewer-request",
          "requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
        },
        "request": {
          "clientIp": "203.0.113.178",
          "headers": {
            "host": [
              {
                "key": "Host",
                "value": "d111111abcdef8.cloudfront.net"
              }
            ],
            "user-agent": [
              {
                "key": "User-Agent",
                "value": "curl/7.66.0"
              }
            ],
            "accept": [
              {
                "key": "accept",
                "value": "*/*"
              }
            ]
          },
          "method": "GET",
          "querystring": "",
          "uri": "/"
        }
      }
    }
  ]
}
```

### オリジンリクエストの例
<a name="example-origin-request"></a>

次の例は、オリジンリクエストイベントオブジェクトを示しています。

```
{
  "Records": [
    {
      "cf": {
        "config": {
          "distributionDomainName": "d111111abcdef8.cloudfront.net",
          "distributionId": "EDFDVBD6EXAMPLE",
          "eventType": "origin-request",
          "requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
        },
        "request": {
          "clientIp": "203.0.113.178",
          "headers": {
            "x-forwarded-for": [
              {
                "key": "X-Forwarded-For",
                "value": "203.0.113.178"
              }
            ],
            "user-agent": [
              {
                "key": "User-Agent",
                "value": "Amazon CloudFront"
              }
            ],
            "via": [
              {
                "key": "Via",
                "value": "2.0 2afae0d44e2540f472c0635ab62c232b.cloudfront.net (CloudFront)"
              }
            ],
            "host": [
              {
                "key": "Host",
                "value": "example.org"
              }
            ],
            "cache-control": [
              {
                "key": "Cache-Control",
                "value": "no-cache"
              }
            ]
          },
          "method": "GET",
          "origin": {
            "custom": {
              "customHeaders": {},
              "domainName": "example.org",
              "keepaliveTimeout": 5,
              "path": "",
              "port": 443,
              "protocol": "https",
              "readTimeout": 30,
              "responseCompletionTimeout": 30,
              "sslProtocols": [
                "TLSv1",
                "TLSv1.1",
                "TLSv1.2"
              ]
            }
          },
          "querystring": "",
          "uri": "/"
        }
      }
    }
  ]
}
```

### リクエストイベントフィールド
<a name="request-event-fields"></a>

リクエストイベントオブジェクトデータは、`config` (`Records.cf.config`) と `request` (`Records.cf.request`) の 2 つのサブオブジェクトに含まれています。次のリストは、各サブオブジェクトのフィールドを示しています。

#### 設定オブジェクトのフィールド
<a name="request-event-fields-config"></a>

次のリストでは、`config` オブジェクト (`Records.cf.config`) のフィールドについて説明します。

**`distributionDomainName` (読み取り専用)**  
リクエストに関連付けられているディストリビューションのドメイン名。

**`distributionID` (読み取り専用)**  
リクエストに関連付けられているディストリビューションの ID。

**`eventType` (読み取り専用)**  
リクエストに関連付けられているトリガーのタイプ (`viewer-request` または `origin-request`)。

**`requestId` (読み取り専用)**  
ビューワーから CloudFront へのリクエストを一意に識別する暗号化された文字列。`requestId` の値は CloudFront アクセスログにも `x-edge-request-id` として表示されます。詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」および「[ログファイルのフィールド](standard-logs-reference.md#BasicDistributionFileFormat)」を参照してください。

#### リクエストオブジェクトのフィールド
<a name="request-event-fields-request"></a>

次のリストでは、`request` オブジェクト (`Records.cf.request`) のフィールドについて説明します。

**`clientIp` (読み取り専用)**  
リクエストを行ったビューワーの IP アドレス。ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送った場合、この値はプロキシまたはロードバランサーの IP アドレスです。

**headers (読み書き)**  
リクエストのヘッダー。次の点に注意してください。  
+ `headers` オブジェクトのキーは標準の HTTP ヘッダー名を小文字にしたものです。小文字のキーを使用して、大文字と小文字を区別せずにヘッダー値にアクセスできます。
+ 各ヘッダーオブジェクト (`headers["accept"]`、`headers["host"]` など) はキーと値のペアの配列です。返されたヘッダーの配列には、リクエストの値ごとに 1 つのキーと値のペアが含まれます。
+ `key` には、HTTP リクエストに表示されるヘッダーの大文字と小文字を区別する名前が含まれます (`Host`、`User-Agent`、`X-Forwarded-For`、`Cookie` など)。
+ `value` には、HTTP リクエストに表示されるヘッダー値が含まれます。
+ Lambda 関数がリクエストヘッダーを追加または変更し、ヘッダー `key` フィールドを含めない場合、Lambda@Edge は指定したヘッダー名を使用してヘッダー `key` を自動的に挿入します。ヘッダー名をどのようにフォーマットしたかにかかわらず、自動的に挿入されるヘッダーキーの各パートは、先頭が大文字になり、ハイフン (-) で区切られます。

  たとえば、ヘッダー `key` なしで次のようなヘッダーを追加できます。

  ```
  "user-agent": [
    {
      "value": "ExampleCustomUserAgent/1.X.0"
    }
  ]
  ```

  この例では、Lambda@Edge は `"key": "User-Agent"` を自動的に挿入します。
ヘッダー使用の制限の詳細については、「[エッジ関数に対する制限](edge-functions-restrictions.md)」を参照してください。

**`method` (読み取り専用)**  
リクエストの HTTP メソッド。

**`querystring` (読み書き)**  
リクエスト内のクエリ文字列 (存在する場合)。リクエストにクエリ文字列が含まれていない場合でも、イベントオブジェクトには `querystring` が含まれ、値が空になります。クエリ文字列の詳細については、「[クエリ文字列パラメータに基づいてコンテンツをキャッシュする](QueryStringParameters.md)」を参照してください。

**`uri` (読み書き)**  
リクエストされたオブジェクトの相対パス。Lambda 関数が `uri` 値を変更する場合、次の点に注意してください。  
+ 新しい `uri` 値は、スラッシュ (/) で始める必要があります。
+ 関数で `uri` 値を変更すると、ビューワーがリクエストしているオブジェクトが変更されます。
+ 関数で `uri` 値を変更しても、リクエストのキャッシュ動作や送信先オリジンは*変わりません*。

**`body` (読み書き)**  
HTTP リクエストの本文。`body` 構造には、次のフィールドを含めることができます。    
**`inputTruncated` (読み取り専用)**  
本文が Lambda@Edge で切り捨てられたかどうかを示すブーリアン型フラグ。詳細については、「[[本文を含める] オプションを使用する場合のリクエスト本文に対する制限](lambda-at-edge-function-restrictions.md#lambda-at-edge-restrictions-request-body)」を参照してください。  
**`action` (読み書き)**  
本文で実行する予定のアクション。`action` のオプションは次のとおりです。  
+ `read-only:` これがデフォルト値です。Lambda 関数からレスポンスを返す際に、`action` が読み取り専用の場合、Lambda@Edge は `encoding` または `data` への変更をすべて無視します。
+ `replace:` オリジンに送信される本文を置き換えるときに指定します。  
**`encoding` (読み書き)**  
本文のエンコード。Lambda@Edge が Lambda 関数に本文を公開すると、まず本文を base64-encoding に変換します。本文を置き換える `replace` として `action` を選択した場合、`base64` (デフォルト) または `text` エンコードを使用することもできます。`encoding` を `base64` と指定したが本文が有効な base64 でない場合、CloudFront はエラーを返します。  
**`data` (読み書き)**  
リクエストボディのコンテンツ。

**`origin` (読み書き) (オリジンイベントのみ)**  
リクエストの送信先のオリジン。`origin` 構造には、*オリジンを 1 つだけ*含める必要があります。カスタムオリジンでも Amazon S3 オリジンでも構いません。  
指定するオリジンタイプ (カスタムオリジンまたは Amazon S3 オリジン) に応じて、以下のフィールドをリクエストに指定する必要があります。    
**`customHeaders` (読み取り/書き込み) (カスタムおよび Amazon S3 オリジン)**  
(オプション) 各カスタムヘッダーの名前と値のペアを指定することで、カスタムヘッダーをリクエストに含めることができます。許可されていないヘッダーを追加することはできず、同じ名前のヘッダーを `Records.cf.request.headers` に含めることもできません。[リクエストヘッダーに関する注意事項](#request-event-fields-request-headers)は、カスタムヘッダーにも適用されます。詳細については、「[CloudFront でオリジンリクエストに追加できないカスタムヘッダー](add-origin-custom-headers.md#add-origin-custom-headers-denylist)」および「[エッジ関数に対する制限](edge-functions-restrictions.md)」を参照してください。  
**`domainName` (読み取り/書き込み) (カスタムおよび Amazon S3 オリジン)**  
オリジンのドメイン名。ドメイン名を空にすることはできません。  
+ **カスタムオリジンの場合** – DNS ドメイン名を指定します (`www.example.com` など)。ドメイン名にコロン (:) を含めることはできません。また、IP アドレスにすることはできません。ドメイン名の最大長は 253 文字です。
+ **Amazon S3 オリジンの場合** - Amazon S3 バケットの DNS ドメイン名を指定します (`amzn-s3-demo-bucket.s3.eu-west-1.amazonaws.com` など)。この名前は最大 128 文字で、すべて小文字であることが必要です。  
**`path` (読み取り/書き込み) (カスタムおよび Amazon S3 オリジン)**  
リクエストがコンテンツを検索するサーバーのディレクトリパス。パスは、先頭をスラッシュ (/) にする必要があります。末尾をスラッシュ (/) にすることはできません (例えば、末尾が `example-path/` は不可です)。カスタムオリジンの場合のみ、パスは URL エンコードされ、最大長は 255 文字にする必要があります。  
**`keepaliveTimeout` (読み書き) (カスタムオリジンのみ)**  
CloudFront がレスポンスの最後のパケットを受け取ってからオリジンへの接続を維持しようとする期間 (秒)。この値には、1～120 の範囲の数値を指定する必要があります。  
**`port` (読み書き) (カスタムオリジンのみ)**  
カスタムオリジンでの CloudFront の接続先ポート。ポートは 80 または 443 であるか、1024 〜 65535 の範囲の数値であることが必要です。  
**`protocol` (読み書き) (カスタムオリジンのみ)**  
オリジンに接続するとき CloudFront が使用する接続プロトコル。ここには、`http` または `https` が表示されます。  
**`readTimeout` (読み取り/書き込み) (カスタムおよび Amazon S3 オリジン)**  
オリジンにリクエストを送信した後、CloudFront がレスポンスを待機する時間 (秒単位)。これは、レスポンスのパケットを受信してから次のパケットを受信するまで CloudFront が待機する時間も指定します。この値には、1～120 の範囲の数値を指定する必要があります。  
高いクォータが必要な場合は、「[オリジン別の応答タイムアウト](cloudfront-limits.md#limits-web-distributions)」を参照してください。  
**`responseCompletionTimeout` (読み取り/書き込み) (カスタムおよび Amazon S3 オリジン)**  
CloudFront からオリジンへのリクエストを開いたままにして応答を待機できる時間 (秒単位)。この時間までにオリジンから完全な応答が受信されない場合、CloudFront は接続を終了します。  
`responseCompletionTimeout` の値は、`readTimeout` の値以上にする必要があります。この値を 0 に設定すると、設定した以前の値はすべて削除され、デフォルトに戻ります。また、イベントリクエストから `responseCompletionTimeout` フィールドを削除することでもこれを実現できます。  
**`sslProtocols` (読み書き) (カスタムオリジンのみ)**  
オリジンとの HTTPS 接続を確立するときに CloudFront が使用できる最小限の SSL/TLS プロトコル。値は、`TLSv1.2`、`TLSv1.1`、`TLSv1`、または `SSLv3` のいずれかです。  
**`authMethod` (読み取り/書き込み) (Amazon S3 オリジンのみ)**  
[オリジンアクセスアイデンティティ (OAI)](private-content-restricting-access-to-s3.md#private-content-restricting-access-to-s3-oai) を使用している場合は、このフィールドを `origin-access-identity` に設定します。OAI を使用していない場合は、`none` に設定します。`authMethod` を `origin-access-identity` に設定した場合、いくつかの要件があります。  
+ `region` を指定する必要があります (次のフィールドを参照)。
+ リクエストをある Amazon S3 オリジンから別のオリジンに変更する場合は、同じ OAI を使用する必要があります。
+ リクエストをカスタムオリジンから Amazon S3 オリジンに変更する場合、OAI を使用することはできません。
このフィールドは[オリジンアクセスコントロール (OAC) ](private-content-restricting-access-to-s3.md)をサポートしていません。  
**`region` (読み取り/書き込み) (Amazon S3 オリジンのみ)**  
Amazon S3 バケットの AWS リージョン。これは、`authMethod` を `origin-access-identity` に設定した場合にのみ必要です。

## レスポンスイベント
<a name="lambda-event-structure-response"></a>

以下のトピックでは、[ビューワーおよびオリジンレスポンスイベント](lambda-cloudfront-trigger-events.md)の Lambda 関数に CloudFront が渡すオブジェクトの構造を示します。例に続いて、ビューワーとオリジンレスポンスイベントで使用可能なすべてのフィールドのリストを示します。

**Topics**
+ [オリジンレスポンスの例](#lambda-event-structure-response-origin)
+ [ビューワーレスポンスの例](#lambda-event-structure-response-viewer)
+ [レスポンスイベントのフィールド](#response-event-fields)

### オリジンレスポンスの例
<a name="lambda-event-structure-response-origin"></a>

次の例は、オリジンレスポンスイベントオブジェクトを示しています。

```
{
  "Records": [
    {
      "cf": {
        "config": {
          "distributionDomainName": "d111111abcdef8.cloudfront.net",
          "distributionId": "EDFDVBD6EXAMPLE",
          "eventType": "origin-response",
          "requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
        },
        "request": {
          "clientIp": "203.0.113.178",
          "headers": {
            "x-forwarded-for": [
              {
                "key": "X-Forwarded-For",
                "value": "203.0.113.178"
              }
            ],
            "user-agent": [
              {
                "key": "User-Agent",
                "value": "Amazon CloudFront"
              }
            ],
            "via": [
              {
                "key": "Via",
                "value": "2.0 8f22423015641505b8c857a37450d6c0.cloudfront.net (CloudFront)"
              }
            ],
            "host": [
              {
                "key": "Host",
                "value": "example.org"
              }
            ],
            "cache-control": [
              {
                "key": "Cache-Control",
                "value": "no-cache"
              }
            ]
          },
          "method": "GET",
          "origin": {
            "custom": {
              "customHeaders": {},
              "domainName": "example.org",
              "keepaliveTimeout": 5,
              "path": "",
              "port": 443,
              "protocol": "https",
              "readTimeout": 30,
              "responseCompletionTimeout": 30,
              "sslProtocols": [
                "TLSv1",
                "TLSv1.1",
                "TLSv1.2"
              ]
            }
          },
          "querystring": "",
          "uri": "/"
        },
        "response": {
          "headers": {
            "access-control-allow-credentials": [
              {
                "key": "Access-Control-Allow-Credentials",
                "value": "true"
              }
            ],
            "access-control-allow-origin": [
              {
                "key": "Access-Control-Allow-Origin",
                "value": "*"
              }
            ],
            "date": [
              {
                "key": "Date",
                "value": "Mon, 13 Jan 2020 20:12:38 GMT"
              }
            ],
            "referrer-policy": [
              {
                "key": "Referrer-Policy",
                "value": "no-referrer-when-downgrade"
              }
            ],
            "server": [
              {
                "key": "Server",
                "value": "ExampleCustomOriginServer"
              }
            ],
            "x-content-type-options": [
              {
                "key": "X-Content-Type-Options",
                "value": "nosniff"
              }
            ],
            "x-frame-options": [
              {
                "key": "X-Frame-Options",
                "value": "DENY"
              }
            ],
            "x-xss-protection": [
              {
                "key": "X-XSS-Protection",
                "value": "1; mode=block"
              }
            ],
            "content-type": [
              {
                "key": "Content-Type",
                "value": "text/html; charset=utf-8"
              }
            ],
            "content-length": [
              {
                "key": "Content-Length",
                "value": "9593"
              }
            ]
          },
          "status": "200",
          "statusDescription": "OK"
        }
      }
    }
  ]
}
```

### ビューワーレスポンスの例
<a name="lambda-event-structure-response-viewer"></a>

次の例は、ビューワーレスポンスイベントオブジェクトを示しています。

```
{
  "Records": [
    {
      "cf": {
        "config": {
          "distributionDomainName": "d111111abcdef8.cloudfront.net",
          "distributionId": "EDFDVBD6EXAMPLE",
          "eventType": "viewer-response",
          "requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
        },
        "request": {
          "clientIp": "203.0.113.178",
          "headers": {
            "host": [
              {
                "key": "Host",
                "value": "d111111abcdef8.cloudfront.net"
              }
            ],
            "user-agent": [
              {
                "key": "User-Agent",
                "value": "curl/7.66.0"
              }
            ],
            "accept": [
              {
                "key": "accept",
                "value": "*/*"
              }
            ]
          },
          "method": "GET",
          "querystring": "",
          "uri": "/"
        },
        "response": {
          "headers": {
            "access-control-allow-credentials": [
              {
                "key": "Access-Control-Allow-Credentials",
                "value": "true"
              }
            ],
            "access-control-allow-origin": [
              {
                "key": "Access-Control-Allow-Origin",
                "value": "*"
              }
            ],
            "date": [
              {
                "key": "Date",
                "value": "Mon, 13 Jan 2020 20:14:56 GMT"
              }
            ],
            "referrer-policy": [
              {
                "key": "Referrer-Policy",
                "value": "no-referrer-when-downgrade"
              }
            ],
            "server": [
              {
                "key": "Server",
                "value": "ExampleCustomOriginServer"
              }
            ],
            "x-content-type-options": [
              {
                "key": "X-Content-Type-Options",
                "value": "nosniff"
              }
            ],
            "x-frame-options": [
              {
                "key": "X-Frame-Options",
                "value": "DENY"
              }
            ],
            "x-xss-protection": [
              {
                "key": "X-XSS-Protection",
                "value": "1; mode=block"
              }
            ],
            "age": [
              {
                "key": "Age",
                "value": "2402"
              }
            ],
            "content-type": [
              {
                "key": "Content-Type",
                "value": "text/html; charset=utf-8"
              }
            ],
            "content-length": [
              {
                "key": "Content-Length",
                "value": "9593"
              }
            ]
          },
          "status": "200",
          "statusDescription": "OK"
        }
      }
    }
  ]
}
```

### レスポンスイベントのフィールド
<a name="response-event-fields"></a>

レスポンスイベントオブジェクトデータは、`config` (`Records.cf.config`)、`request` (`Records.cf.request`)、`response` (`Records.cf.response`) の 3 つのサブオブジェクトに含まれています。リクエストオブジェクトのフィールドの詳細については、「[リクエストオブジェクトのフィールド](#request-event-fields-request)」を参照してください。次のリストでは、`config` および `response` サブオブジェクトのフィールドについて説明します。

#### 設定オブジェクトのフィールド
<a name="response-event-fields-config"></a>

次のリストでは、`config` オブジェクト (`Records.cf.config`) のフィールドについて説明します。

**`distributionDomainName` (読み取り専用)**  
レスポンスに関連付けられているディストリビューションのドメイン名。

**`distributionID` (読み取り専用)**  
レスポンスに関連付けられているディストリビューションの ID。

**`eventType` (読み取り専用)**  
レスポンスに関連付けられているトリガーのタイプ (`origin-response` または `viewer-response`)。

**`requestId` (読み取り専用)**  
このレスポンスが関連付けられているビューワーから CloudFront へのリクエストを一意に識別する暗号化された文字列。`requestId` の値は CloudFront アクセスログにも `x-edge-request-id` として表示されます。詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」および「[ログファイルのフィールド](standard-logs-reference.md#BasicDistributionFileFormat)」を参照してください。

#### レスポンスオブジェクトのフィールド
<a name="response-event-fields-response"></a>

次のリストでは、`response` オブジェクト (`Records.cf.response`) のフィールドについて説明します。Lambda@Edge 関数を使用して HTTP レスポンスを生成する方法については、「[リクエストトリガーでの HTTP レスポンスを生成する](lambda-generating-http-responses.md#lambda-generating-http-responses-in-requests)」を参照してください。

**`headers` (読み書き)**  
レスポンスのヘッダー。次の点に注意してください。  
+ `headers` オブジェクトのキーは標準の HTTP ヘッダー名を小文字にしたものです。小文字のキーを使用して、大文字と小文字を区別せずにヘッダー値にアクセスできます。
+ 各ヘッダーオブジェクト (`headers["content-type"]`、`headers["content-length"]` など) はキーと値のペアの配列です。返されたヘッダーの配列には、レスポンスの値ごとに 1 つのキーと値のペアが含まれます。
+ `key` には、HTTP レスポンスに表示される際に大文字と小文字が区別されるヘッダー名が含まれます (`Content-Type`、`Content-Length`、`Cookie` など)。
+ `value` には、HTTP レスポンスに表示されるヘッダー値が含まれます。
+ Lambda 関数がレスポンスヘッダーを追加または変更し、ヘッダー `key` フィールドを含めない場合、Lambda@Edge は指定したヘッダー名を使用してヘッダー `key` を自動的に挿入します。ヘッダー名をどのようにフォーマットしたかにかかわらず、自動的に挿入されるヘッダーキーの各パートは、先頭が大文字になり、ハイフン (-) で区切られます。

  たとえば、ヘッダー `key` なしで次のようなヘッダーを追加できます。

  ```
  "content-type": [
    {
      "value": "text/html;charset=UTF-8"
    }
  ]
  ```

  この例では、Lambda@Edge は `"key": "Content-Type"` を自動的に挿入します。
ヘッダー使用の制限の詳細については、「[エッジ関数に対する制限](edge-functions-restrictions.md)」を参照してください。

**`status`**  
レスポンスの HTTP ステータスコード。

**`statusDescription`**  
レスポンスの HTTP ステータスの説明。