2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

独自ドメインをAWSでHTTPS公開するためのメモ (Route 53 / ALB / ACM / EC2 / RDS)

2
Last updated at Posted at 2025-08-24

この記事では、独自ドメイン + SSL化されたサイトをAWS上に構築する際に、どういう構造で動いているかを整理し、「役割の分担」と「通信の流れ」を理解するためのメモです。


1. まず登場人物(サービス)を整理する

  • Route 53
    独自ドメインの DNS を管理します。example.com にアクセスが来たとき、最終的に ALB の DNS 名 を返すように設定します(A レコードの エイリアス を使う)。

  • ACM(AWS Certificate Manager)
    独自ドメイン用の 公開証明書 を発行・自動更新します。証明書は ALB に載せます(EC2 ではなく)。

  • ALB(Application Load Balancer)
    入口のゲートです。HTTPS を受ける場所であり、HTTP → HTTPS のリダイレクトもここで行います。アプリ本体(EC2)への転送も ALB が担当します。

  • EC2(アプリサーバ)
    WordPress や Rails などアプリ本体を動かすサーバ。80 番ポートで ALB からのリクエストだけを受けます。TLS は ALB に任せるので、EC2 側は平文 HTTP で OK です。

  • RDS(データベース)
    データを保存する場所。インターネットからは見えないプライベートな領域に置きます。EC2 からだけ接続を許可します。

2. 名前解決(ドメイン → ALB)

  1. ユーザーが https://example.com を開くと、ブラウザはまず DNS に問い合わせます。
  2. Route 53 のホストゾーンでは、**A レコード(エイリアス)**で ALB の DNS 名 を指すようにしてあります。
  3. その結果、ブラウザは ALB に接続しに行きます。ここで証明書(ACM)が使われます。

ポイント:Apex(example.com のようなルート)でも A(エイリアス) を使えば ALB の DNS 名 を指せます。IP を直接書く必要はありません(ALB の IP は固定ではないため)。

3. 通信の流れ(入口からアプリまで)

  1. ブラウザは 443/TLS(HTTPS)ALB に接続します。ALB は ACM の証明書で暗号化を終端します。
  2. ALB は ターゲットグループに登録された EC280/TCP で転送します。
  3. EC2 のアプリがレスポンスを返し、ALB がそれをユーザーへ返します。
  4. もし最初に http:// で来た場合は、ALB が 301https:// にリダイレクトします(アプリ側にリダイレクト設定は不要)。

ポイント:TLS は ALB に集約し、アプリは 80 番のみでシンプルに運用します。証明書の更新や配布が不要になり、差し替え・横展開が簡単になります。

4. ネットワークの置き場所と境界

  • Public サブネット
    インターネットに出られる領域。ALB(と今回は EC2 も)を配置します。Public ルートテーブルには 0.0.0.0/0 → IGW が設定されます。

  • Private サブネット
    インターネットに直接は出ない領域。RDS を置きます。Public 側のような IGW ルートは持ちません。

最低 2 つのアベイラビリティーゾーンに同種のサブネットを 1 つずつ用意しておくと、可用性が上がります(ALB は自動で複数 AZ にノードを置きます)。

5. セキュリティ(通れる相手を最小限に)

  • ALB のセキュリティグループ
    80/443 を全世界から受ける(インターネットの入口のため)。

  • EC2 のセキュリティグループ
    80 → 送信元は ALB のセキュリティグループ のみにします。直接の全世界公開はしません。
    SSH(22)は 自分の固定 IP からのみ。

  • RDS のセキュリティグループ
    3306(MySQL) → 送信元は EC2 のセキュリティグループ のみにします。インターネットからは到達不可。

入口 → アプリ → DB の順に「誰が誰へ通れるか」を グループ単位で絞ると、読みやすく・安全です。

6. ヘルスチェックと切り替え(安全に入れ替える)

  • ターゲットグループに ヘルスチェックを設定します。パスは / でも /health でも構いません。成功コードは 200–399 にしておくと、リダイレクト応答も正常扱いにできます。
  • 新しいアプリ(例:Rails)を別のターゲットグループに登録し、ALB の転送先を切り替えるだけで入れ替えができます。問題があればすぐ戻せます。

入口(DNS・ALB・ACM)はそのまま、裏側の転送先だけを変えるので、安全で早いです。

7. きちんと動いているかを短く確かめる

# DNS が ALB を向いているか(ALB のパブリックIP群が返る)
dig +short yourdomain.com

# HTTP → HTTPS へリダイレクトされるか
curl -I http://yourdomain.com

# HTTPS で応答が返るか(ALB で TLS 終端)
curl -I https://yourdomain.com

8. 片付けとコストの考え方(参考)

課金される主なものは ALB / RDS / EC2(時間課金)です。不要になったら、依存の少ない順に Route 53 レコード → ALB / ターゲットグループ → RDS → EC2 → セキュリティグループ → VPC の順で整理します。ドメイン自体は継続利用できます。

まとめ

  • Route 53 は「ドメイン → ALB」を教える係(A エイリアス)
  • ACM + ALB は「HTTPS を受ける係」(TLS 終端と HTTP→HTTPS の入口統一)
  • EC2 は「アプリを動かす係」(80 番のみで ALB からの通信だけ受ける)
  • RDS は「データを守る係」(Private に置き、EC2 からだけ開く)

この分担にしておくと、安全で、運用が軽く、アプリの入れ替えも簡単になります。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?