Amazon CloudFrontでURLリダイレクト

cwfreak.net のドメインだけを維持していて、年明けに有効期限が切れるので流してしまおうかと考えていましたが、Amazon CloudFrontを使ってURLリダイレクトの実験に使ってみるという名目でとりあえず延長することにしました。

CloudFront Functionsを使ってリダイレクトします。CloudFrontだけではリダイレクトできないようなので、ダミーでS3バケットを用意します。以下、自分用覚書。

 

1.  Route 53 にホストゾーン作成

cwfreak.netドメインはお名前.com に登録されているので、お名前.com側のネームサーバーをRoute 53のネームサーバーに変更します。

Route53 – ホストゾーン – 「ホストゾーンの作成」

ドメイン名: cwfreak.net ← ドメイン名と一致必要

タイプ:パブリックホストゾーン

作成されたホストゾーンにNSレコードが4つ(.com, .net, .org, .uk)登録されてるので、これをお名前.com側のネームサーバーに設定します。

2. ACMでSSL/TLS証明書生成

Certificate Manager – 「リクエスト」

証明書のタイプ:パブリック証明書をリクエスト

完全修飾ドメイン名: cwfreak.net ← ドメイン名と一致必要

以下は、デフォルトでOK

3.  ダミーのオリジンS3バケットを用意

S3を開き、以下のバケットを作って適当なファイルをアップロードします。

リージョン:バージニア北部 us-east-1

バケット名:cwfreak.net

アップロードファイル:index.html (中身は 「It Works! 」とプレーンテキストでOK)

4. CloudFrontのオリジンアクセスコントロール(OAC)作成

CloudFront – セキュリティ – オリジンアクセスを開き、「コントロール設定を作成」

名前:cloudfront-cwfreak-net-redirect-oac

署名動作:署名リクエスト(推奨)

オリジンタイプ:S3

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

CloudFront – ディストリビューション – 「ディストリビューションを作成」

Origin Domain: cwfreak.net.s3.us-east-1.amazonaws.com ← 3. S3で作成

Alternative domain name (CNAMEs) – optional: cwfreak.net   ← ドメイン名と一致必要

名前:cwfreak.net.s3.us-east-1.amazonaws.com ← 3. S3で作成

オリジンアクセス: Origin access control settings (recommended)

Origin access control: cloudfront-cwfreak-net-redirect-oac ← 4. OACで作成

Custom SSL certificate – optional: cwfreak.net (xxxxxxxxx)  ← 2. ACMで作成

….

ウェブアプリケーションファイアウォール (WAF):セキュリティ保護を有効にしないでください

設定 – 料金クラス:北米と欧州のみを使用

「ディストリビューションを作成」

6. CloudFront Functionsの関数作成(リダイレクト設定)

CloudFront – 関数 – 「関数を作成」

名前:cloudfront-s3-cwfreak-net-function

Runtime: cloudfront-js-2.0

関数コード:

function handler(event) {
  const uri = event.request.uri
  const newUri = getNewUri(uri)
  return {
    statusCode: 301,
    statusDescription: 'Moved Permanently',
    headers: { location: { value: newUri } },
  }
}

function getNewUri(uri) {
  if (uri === '/') {
    return 'https://web.ji0vwl.net/cw_freak_net.html'
  }
  return 'https://ji0vwl.net'
}

「変更を保存」→「発行(Unpublished)」

関連付けられているディストリビューション

「関連付けを追加」

ディストリビューション: XXXXXXXXXX cwfreak.net ← 5. CloudFrontディストリビューションで作成

イベントタイプ:Viewer Request

キャッシュビヘイビア:デフォルト

「関連付けを追加」→  「関数を発行」

7.  Route 53 にAレコード(エイリアス)追加

Route53 – ホストゾーン –  cwfreak.net – 「レコードの作成」

レコード名:「空欄」.cwfreak.net

レコードタイプ:A – IPv4 アドレスと一部のAWSリソースにトラフィックをルーティングします。

エイリアス:ON

トラフィックのルーティング先:CloudFrontディストリビューションへのエイリアス

リージョン:米国東部(バージニア北部) ← 変更不可

ディストリビューション:cwfreak.net(xxxxxxx.cloudfront.net) ← CloudFrontディストリビューションのAlternative domain name (CNAMEs)

ZoneApex(xxxx.cwfrea.netのxxxxがないもの = cwfreak.net)はCNAMEを登録できないのですが、Route 53のエイリアスを使うことで対応ができます。

 

これで、https://cwfreak.net/ にアクセスするとCW Freakのページに、ルート以外(https://cwfreak.net/aaaa.html)だと当サイトにリダイレクトされるようになりました。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


リンクが含まれる投稿はサイト管理者の承認後に表示されます(スパム対策)