はじめに
クライアントからELBへの通信の間にCloudFrontを置いて通信をキャッシュ化する際のメモです。
前提
こちらの記事の続きです
やっていく
事前準備
「blog.<ドメイン>」の証明書はACMとRoute53上から削除しておく
「blog.<ドメイン>」の証明書が適用されてALBのリスナーは削除
S3バケット作成
Route53のフェイルオーバー先のレコード名として「alb.〜」というドメインを一時的に利用する為、
「alb.<オリジナルドメイン」のS3バケットを作成する。
バケットポリシーでアクセスを許可する。
Route53レコード変更
ALBとS3に紐づくAレコード(blog.〜)を一時的に(alb.〜)に変更する。
ALBに紐づくAレコードを「alb.〜」に変更。
セカンダリも同様。セカンダリのバケットは事前準備で作成したバケットを指定。
ACM証明書発行
「*.<オリジナルドメイン>」の証明書を作成。検証を行いRoute53にもレコードが追加される。
リスナー追加
ELBのリスナー(HTTP)を追加。証明書は新規に作成した「*.<オリジナルドメイン>」の証明書を適用
現時点でhttps://alb.<オリジナルドメイン>へのアクセスが可能となる。
CloudFront用証明書取得
CloudFront用の証明書はバージニア北部でしか存在しないので、リージョンを切り替えて、
「*.<オリジナルドメイン>」の証明書を取得。検証してRoute53のレコードも作成させる。
CloudFront作成
作成する。ドメインは「alb.ドメイン名」を指定。
HTTPSオンリー
証明書は先ほど作成したものを適用。
キャッシュポリシーは適当に作成したものを適用。
しばらくすると有効になる。この時点でCloudFrontのドメイン名でアクセス可能
CloudFront向けのレコード作成
CloudFrontのDNSと、「blog.<ドメイン名>」と紐づくAレコード作成
これで作業完了
最終盤の設定状況
CloudFront
オリジンに「alb.<ドメイン名>」を指定。
Route53
「blog.<ドメイン名>」にHTTPアクセスすると、証明書を適用したCloudFrontへ。
CloudFrontはオリジンを証明書を適用したELBを指定しており、ELBへHTTP通信。
ALB
証明書を適用したHTTPSのリスナーが受け付け、HTTPポートを受け付けるターゲットグループに転送。
ALBのSGはHTTPSでフルオープン
WebサーバはSSHフルオープンと、ALBからのHTTPを許可