オリジンからのHTTPヘッダー情報をLambda@Edgeで削除してみた
こんにちは、オリジンからのレスポンスで削除した情報があったので
今回の記事ではオリジンからの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の作成
まず、関数を実行するためのロールを作成いたします。
信頼関係も確認します。 ちゃんと設定されていることを確認しました。
関数を作成する時のロールをアタッチします。
// 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);
};
作成した関数を新しいバージョンとして発行いたします。
対処のCloudFrontに関連付け設定します。
関連付け関数の確認
確認
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で削除できることを確認いたしました。
もし削除したい情報がある方はお試しください