オリジンからのHTTPヘッダー情報をLambda@Edgeで削除してみた

オリジンからのHTTPヘッダー情報をLambda@Edgeで削除してみた

2025.08.01

こんにちは、オリジンからのレスポンスで削除した情報があったので
今回の記事ではオリジンからのHTTPレスポンスで追加されるヘッダー削除してみました。

試した環境

CloudFrontとEC2が紐づいており、レスポンスの中に削除したいヘッダーが含まれている状況

HTTP/2 200 
content-type: text/html
content-length: 26
server: nginx/1.28.0
date: Thu, 31 Jul 2025 15:04:46 GMT
last-modified: Thu, 31 Jul 2025 02:13:30 GMT
accept-ranges: bytes
etag: "688ad14a-1a"
set-cookie: testcookie=abc123; Path=/
cache-control: private, max-age=0
x-cache: Miss from cloudfront
via: 1.1 386f14ac9de363c565d435be2317d28c.cloudfront.net (CloudFront)
x-amz-cf-pop: NRT57-P9
x-amz-cf-id: ZwHeD4DcQ6BACl96Eqsu_rQCnEkAuW9fXFjCF9G_mPx-Hhkh4W0clg==

レスポンスからいただいてる情報はこちらになります。
このレスポンスの中からSet-CookieとCache-Controlを削除していきたいと思います。

Lambda@Edgeの作成

まず、関数を実行するためのロールを作成いたします。
スクリーンショット 2025-07-31 午後6.09.30
信頼関係も確認します。 ちゃんと設定されていることを確認しました。

スクリーンショット 2025-07-31 午後6.09.42

関数を作成する時のロールをアタッチします。

// index.js
exports.handler = (event, context, callback) => {
  console.log(event);
  const response = event.Records[0].cf.response;
  console.log(event.Records[0]);
  const headers = response.headers;
  console.log(headers);
  if ('set-cookie' in headers) {
      delete headers['set-cookie'];
  }
  if ('cache-control' in headers && headers['cache-control'][0].value.includes("private")) {
      delete headers['cache-control'];
  }
  callback(null, response);
};

作成した関数を新しいバージョンとして発行いたします。

スクリーンショット 2025-07-31 午後6.12.46

スクリーンショット 2025-07-31 午後6.13.05
対処のCloudFrontに関連付け設定します。

関連付け関数の確認

スクリーンショット 2025-07-31 午後6.10.41

確認

HTTP/2 200
content-type: text/html
content-length: 26
server: nginx/1.28.0
date: Thu, 31 Jul 2025 05:40:34 GMT
last-modified: Thu, 31 Jul 2025 02:13:30 GMT
accept-ranges: bytes
etag: "688ad14a-1a"
x-cache: Hit from cloudfront
via: 1.1 d2104da91378e8b035256e7a8c6c9186.cloudfront.net (CloudFront)
x-amz-cf-pop: NRT57-P9
x-amz-cf-id: vLi1Ou3CBdOWlpOiTBT85WtIn877rXu8wChIQed4betJ77GWve06Eg==
age: 12788

Set-CookieとCache-Controlがちゃんと削除されていることが確認できました。

まとめ

オリジンからのHTTPヘッダー情報をLambda@Edgeで削除できることを確認いたしました。
もし削除したい情報がある方はお試しください

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.