ENGINEER BLOG ENGINEER BLOG
  • 公開日
  • 最終更新日

【CloudFront】Lambda@edgeでオリジンの転送

この記事を共有する

目次

はじめに

皆さんこんにちは!パーソル&サーバーワークスの小泉です。
CloudFront配下のアプリケーションで特定のクエリパラメータを含むリクエストを別のオリジンに転送したいケースがあったので検証してみました!

本記事では Lambda@edgeの使い方 を解説します!

構成図

構成図 ※構成図に記載されているALB,EC2,S3の実装手順は割愛します

実装手順

CloudFrontの設定

  1. CloudFrontからディストリビューションを作成する
  2. オリジンにALBとS3を設定する

Lambda@Edgeの設定

  1. us-east-1リージョンからLambdaを作成する
    labmda@edge
  2. 以下のソースコードを入力し、トリガーの設定からCloudFrontを選択し、Lambda@edgeをデプロイする
'use strict';
exports.handler = (event, context, callback) => {
  const request = event.Records[0].cf.request;
  const querystring = request.querystring; 
  if (querystring && querystring.indexOf("wovn=en") !== -1) {
    request.origin = {
      custom: {
        domainName: "xx-yyyy-zzzzz.s3-website-<リージョン名>.amazonaws.com",
        port: 80,
        protocol: "http",
        path: "",
        sslProtocols: ["TLSv1", "TLSv1.1", "TLSv1.2"],
        readTimeout: 5,
        keepaliveTimeout: 5,
        customHeaders: {}
      }
    };
    request.headers['host'] = [{
      key: 'host',
      value: "xx-yyyy-zzzzz.s3-website-<リージョン名>.amazonaws.com"
    }];
  }
  callback(null, request);
};

labmda@edge2

動作確認(Serverを確認する)

クエリパラメータを含まないリクエスト(EC2のindex.htmlを返す)

curl -I https://.cloudfront.net
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 19
Connection: keep-alive
Date: Thu, 27 Mar 2025 03:52:59 GMT
Set-Cookie: AWSALB=[Mask]
Set-Cookie: AWSALBCORS=[Mask]
Server: Apache/2.4.62 (Amazon Linux)
Last-Modified: Sun, 23 Mar 2025 09:04:03 GMT
ETag: "13-630fec4e60907"
Accept-Ranges: bytes
X-Cache: Miss from cloudfront
Via: 1.1 [Mask]
X-Amz-Cf-Pop: [Mask]
X-Amz-Cf-Id: [Mask]

クエリパラメータを含むリクエスト(S3のindex.htmlを返す)

>curl -I https://.cloudfront.net?wovn=en
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 596
Connection: keep-alive
Date: Thu, 27 Mar 2025 03:52:38 GMT
Last-Modified: Sun, 23 Mar 2025 08:35:14 GMT
ETag: "f7c0a30788b0e6631f13c62270b7da7f"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 [Mask]
X-Amz-Cf-Pop: [Mask]
X-Amz-Cf-Id: [Mask]

まとめ

無事に特定のパラメータを含むリクエストを別のオリジンに転送することができました!

この記事は私が書きました

小泉 和貴

記事一覧

全国を旅行することを目標に、仕事を頑張っています。

小泉 和貴

この記事を共有する

クラウドのご相談

CONTACT

クラウド導入や運用でお悩みの方は、お気軽にご相談ください。
専門家がサポートします。

サービス資料ダウンロード

DOWNLOAD

ビジネスをクラウドで加速させる準備はできていますか?
今すぐサービス資料をダウンロードして、詳細をご確認ください。