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.

[2020Dec] HTTP と HTTPS のサイト転送を AWS で

Posted at

はじめに

http / https のサイト転送が必要になったので、試してみました。

URL 転送といえば最近では短縮 URL の活用がメジャーで、日本でも一般的に利用されていると思います。でも欲しいのはサイト転送です。
日本にも短縮しない URL 転送やサイト転送のサービスはありますし、海外では無料プランのあるサービスも見かけますが、せっかくなので AWS でやることにしました。

AWS で実現する方法の説明書は日本語情報も見かけるので、後発の本書としては劣化コピー感もありますが、それらの情報と少し違う操作をしたので、メモを残す次第です。

大まかな仕組み

  • S3 の静的ウェブサイトホスティングの HTTP 転送機能で転送する
  • CloudFront の Alternate Domain Names 機能で名前付け、および、暗号化する
  • DNS の CNAME or ANAME で(間接的に) IP Address 付けする

手順概略

  1. ACM 証明書作成
  2. S3 バケット作成
  3. S3 バケット設定
  4. CloudFront ディストリビューション作成
  5. DNS 設定

手順詳細

ACM 証明書作成

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

S3 バケット作成

デフォルトからの変更点は下記。

  • 「ブロックパブリックアクセスのバケット設定」は「ブロックしない」! 笊!

S3 バケット設定

「プロパティ」の「静的ウェブサイトホスティング」で、選択肢は上から「有効にする」「オブジェクトのリクエストをリダイレクトする」「なし」を。
「ホスト名」には転送先ドメインの FQDN を記入。URL じゃないよ。
↓こんな感じ。
s3_config.png

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

delivery method は Web で。
Origin Domain Name は S3 バケットの静的ウェブサイトホスティングのバケットウェブサイトエンドポイントの FQDN を記入。プルダウンから選べるものはエンドポイントの FQDN じゃないよ!
Alternate Domain Names に転送元ドメインの FQDN を記入。
SSL Certificate は Custom SSL Certificate を選択し、ACM で作っておいた証明書を選択。

DNS 設定

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

トラブルシュート

CloudFront の Origin Domain Name にエンドポイントではなくて S3 バケットの FQDN が入っていると S3 が 403 を XML で返しますよ。
↓こんなやつ。
s3_403.png

CloudFront に Alternate Domain Names が設定されていないまま DNS 的に到達可能になると CloudFront が 403 を返しますよ。
↓こんなやつ。
cf_403.png

おわりに

最近は ANAME が使える DNS も増えてきたっぽいですね。IIJ とか。
みんな Zone Apex 好きだなぁ。

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?