CloudFront Functions のテスト機能を使用して、HTTP ヘッダー名の大文字・小文字の扱いを確認したナレッジ紹介いたします。
<結論>
CloudFront Functions のテスト機能を使用して、HTTP ヘッダー名の扱いを確認しました。
テストイベントの HTTP ヘッダー名は小文字で指定できました。
関数コードで x-cm-test-header を小文字で追加できました。
テスト結果のイベントオブジェクトでも、x-cm-test-header は小文字で出力されました。
インターネットの入り口で、すばやくルールを確認して案内する係のような機能です。
学校の正門には、登校してきた人をチェックする先生がいます。
生徒が学校に来るたびに、
先生は
名札が付いているかな?
この教室に行く人かな?
違う場所に案内した方がいいかな?
を一瞬で確認します。
<構築>
①CloudFront コンソールで 関数 を開き、Createを選択します。

②関数コードには、以下を入力します。
function handler(event) {
var response = event.response;
response.headers['x-cm-test-header'] = {
value: 'cloudfront-functions'
};
return response;
}
③response.headers に対して、x-cm-test-header を追加しています。
ポイントは、関数コード上のヘッダー名を x-cm-test-header のように小文字で指定していることです。
コードを入力後、[変更を保存]を選択します。
④続いて、[テスト]タブを開き、イベントタイプに[Viewer response]を選択します。
テストイベントはフォームから入力できます。今回は、イベントオブジェクト内のヘッダー名を明示的に確認するため、[JSON を編集]を使用しました。
[JSON を編集]で、以下のイベントオブジェクトを入力して保存します。
{
"version": "1.0",
"context": {
"eventType": "viewer-response"
},
"viewer": {
"ip": "192.0.2.1"
},
"request": {
"method": "GET",
"uri": "/",
"querystring": {},
"headers": {
"host": {
"value": "example.com"
}
},
"cookies": {}
},
"response": {
"statusCode": 200,
"statusDescription": "OK",
"headers": {
"content-type": {
"value": "text/html"
}
},
"cookies": {}
}
}
⑤テストイベントでは、host や content-type のように HTTP ヘッダー名を小文字で指定しています。
テスト用イベントでは、distributionDomainName、distributionId、requestId などの一部フィールドを省略できます。
⑥[関数をテスト]を選択して、開発ステージの CloudFront Functions を実行します。
実行結果は 200 OK でした。また、コンピューティング使用率は 6 でした。
参考文献



