0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[2021Aug] HTTP と HTTPS のサイト転送を AWS CloudFront Functions で

Posted at

はじめに

AWS CloudFront では HTTP Request / Response の加工などが可能で、Origin にアクセスせず Response を返すことも可能です。
この加工は別途用意した関数で処理されますが、関数の実行機構として新しく CloudFront Functions がデビューしたとのこと。
「S3 を使った転送と同等のことが CloudFront 単体で実現できる」ということだと解釈し、試してみました。

大まかな仕組み

  • Viewer request に関連付けた CloudFront Functions 関数で転送する(Status Code 301 を返す Response を生成する)
  • CloudFront の Alternate Domain Names 機能で名前付け、および、暗号化する
  • DNS の CNAME or ANAME で(間接的に) IP Address 付けする

S3 を利用する場合と比べると、転送機能を担っているのが S3 から CloudFront に代わりますが、その他の名前付けなどは同じです。

手順概略

  1. ACM 証明書作成
  2. CloudFront Functions 関数作成
  3. CloudFront ディストリビューション作成
  4. DNS 設定

手順詳細

ACM 証明書作成

us-east-1 にて、転送元ドメインの証明書を作成。

CloudFront Functions 関数作成

サブメニューの Distributions の下あたりに新設された Functions リンクから関数作成を始めます。

転送用の関数の内容は、例えば下記。

function handler(event) {
  var DEST_LOC_BASE = 'https://specify.destination.fqdn.here';

  var response = {
    statusCode: 301,
    statusDescription: 'Moved Permanently',
    headers: {
      'location': { value: DEST_LOC_BASE + event.request.uri }
    }
  };

  return response;
}

執筆時点で const は使えませんでした。
uri は "/" で始まるパス文字列です。

CloudFront ディストリビューション作成

Origin Domain Name は、転送先ドメインの FQDN を記入しておきました。ちょっとパラドックス感もありますが、必須項目につき空にできないので。
Function associations の Viewer request にて、作成した CloudFront Functions 関数を関連付け。
Alternate Domain Names に転送元ドメインの FQDN を記入。
SSL Certificate は Custom SSL Certificate を選択し、ACM で作っておいた証明書を選択。

DNS 設定

Route53 だったら CNAME じゃなくて A の Alias を使うのが正解でしょう。Zone Apex に対しても使えます。

おわりに

初見でもスムースに構築できました。test や publish など CloudFront Functions の UI はシンプルかつ強力です。
S3 を使うより断然良いと思います。

なお、前述の関数の Compute Utilization は 25 でした。上限が 100 とのことですが、転送目的なら十分に足りそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?