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

【CloudFront】CloudFront Functionsでリクエストをリダイレクト

この記事を共有する

目次

はじめに

皆さんこんにちは!パーソル&サーバーワークスの小泉です。
前回のブログでは、Lambda@edgeを使用し、Amazon CloudFront (以下、CloudFront) 配下のアプリケーションで特定のクエリパラメータに応じてオリジンに転送する方法を紹介しました。
【CloudFront】Lambda@edgeでオリジンの転送
今回はそのケースとは少し異なり、特定のクエリパラメータを含むリクエストを、別のURLへリダイレクトさせる方法を検証してみました!

本記事では CloudFront Functionsの使い方 を解説します!

構成図

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

実装手順

CloudFrontの設定

  1. CloudFrontからディストリビューションを作成する
  2. オリジンにALBを設定する
  3. CloudFrontの画面上の関数から関数を作成をクリックする
  4. 以下のコードを貼り付ける
  5. 関数の発行を行う
  6. 作成したディストリビューションと関連付けを行う(イベントタイプはViewer Requestを選択)
function handler(event) {
    var request = event.request;
    var querystring = request.querystring;
    // クエリパラメータに yyyy=zz があるかチェック
    if (querystring && querystring["yyyy"] && querystring["yyyy"].value === "zz") {
        return {
            statusCode: 302,
            statusDescription: "Found",
            headers: {
                "location": { "value": "http://aa-bbb-bucket.s3-website-<リージョン名>.amazonaws.com" }
            }
        };
    }
    // それ以外は ALB へ転送
    return request;
}

動作確認

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

C:\Users\xxx.xxxx>curl http://xxx.cloudfront.net
これはEC2です
C:\Users\xxx.xxxx>

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

C:\Users\xxx.xxxx>curl -L http://xxx.cloudfront.net?yyyy=zz
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Redirected Page</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
            padding: 50px;
            background-color: #f4f4f4;
        }
        h1 {
            color: #333;
        }
        p {
            font-size: 18px;
            color: #666;
        }
    </style>
</head>
<body>
    <h1>これはS3のファイルです</h1>
</body>
</html>
C:\Users\xxx.xxxx>

まとめ

無事に特定のパラメータを含むリクエストを別のURL(S3)にリダイレクトすることができました! 前回のブログと結果自体は同じでも、要件や仕様に応じてCloudFront FunctionsとLambda@Edgeのどちらを使うべきかを適切に判断し、それを踏まえて設計できるエンジニアを目指していきます。

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

小泉 和貴

記事一覧

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

小泉 和貴

この記事を共有する

クラウドのご相談

CONTACT

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

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

DOWNLOAD

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