これまでS3で静的WebホスティングしているところにRoute53で独自ドメインを向ける、という構成だったので http オンリーだったのですが、 このご時世、 https じゃないと使えない機能 (fetchとか) が増えてきたので、 サイトを https 対応しました。

証明書発行

SSL通信には証明書が必要です。 このサイトはAWSで運用してるので、証明書もACM (AWS Certificate Manager)で発行します。 ドメインの検証にはDNS検証を選択しました。Route53で指示されたCNAMEレコードを登録して待ちます。 Route53を利用している場合、[Route 53 でのレコードの作成]というボタンを押すと自動でレコード作成ができるので便利です。

CloudFront

S3で運用してたサイトをhttps対応する場合、CloudFrontを選択するのが一番簡単かと思います。 CloudFrontのオリジンをこれまでのS3を指すようにします。(※これまで静的Webサイトホスティングでやってたのであまり気にしてませんが、適切なアクセス管理(S3のオリジンにアクセスできるのはCloudFrontのみにするとか)をしたい場合はちょっと用意が必要みたいです。) Viewer Protocol PolicyでRedirect HTTP to HTTPSを選ぶとhttpへのアクセスを自動でhttpsにリダイレクトしてくれる模様。

Route53

CloudFrontのドメインでコンテンツが表示できることを確認したあと、 Route53のAレコードをS3からCloudFrontに向けるよう修正したら完了です。

Default TTLは1日なので、記事を投稿してそのままアップロードするような運用の場合は即座に反映されないです。 その場合はCloudFrontからInvalidateする必要があります。(面倒くさいので多分しないです)