AWSで可用性のあるシステム構築をした話

シンジです。

最近インフラ周りを勉強しているんですが、ドメインの設定方法とか証明書とか、わかないことがたくさんでした。 そんな中、ようやくAWSで環境構築ができたため、メモとして残します。

ドメインや証明書などもすべてAWSの機能(Route53、ACM)を利用。

システム全体

f:id:shinji-tec:20210109182716p:plain

ネットワークの設定

VPC

リージョン CIDR IPv4 インターネットゲートウェイ
東京 192.168.0.0/16 アタッチ

サブネット

名前(Name) AZ 環境 CIDR IPv4 自動割当
public-api-1a 1a Public 192.168.10.0/24 あり
public-api-1d 1d Public 192.168.20.0/24 あり
踏み台 1a Public 192.168.50.0/24 あり

ルートテーブル

名前(Name) 関連付けサブネット ルート メイン
public-table public-api-1a,pbulic-api-1d 192.168.0.0/16 -> local, 0.0.0.0.0/0 -> インターネットゲートウェイ いいえ

セキュリティグループ

名前 インバウンド アウトバウンド
API SSH 22 192.168.0.0/16, カスタム 3000 0.0.0.0/0 すべて
DB PostgreSQL 5432 192.168.0.0/16 すべて
踏み台 SSH 22 0.0.0.0/16 すべて
ロードバランサー カスタム 3000 0.0.0.0/0 すべて

フロントエンドの設定

S3の設定

  • Webアプリケーションをアップロードする
  • プロパティの「静的ウェブサイトホスティング」をONにする
  • 「パブリックアクセスをすべてブロック」をOFFにする

CloudFrontの設定

  • 「General」の設定
    • 「Alternate Domain Names」を取得したドメインにする
    • 「Custom SSL Certificate (example.com):」に設定後、対象の証明書を設定する。
    • 「Default Root Object」を「index.html」に設定する -「Behaviors」の設定
    • 「Viewer Protocol Policy」を「Redirect HTTP to HTTPS
    • 「Compress Objects Automatically」を「Yes」に設定する。 -「ErrorPage」の設定
    • SPAの場合、「403」が発生した場合「/」へリダイレクトするように設定する。  

バックエンドの設定

ロードバランサー

EC2

名前(Name) AZ IPアドレス ipv4 セキュリティグループ
api-1a 1a 192.168.10.XXX API
api-1d 1d 192.168.20.XXX API
踏み台 1a 192.168.50.XXX 踏み台

ドメインの設定

証明書の取得

リージョン ドメイン
東京 api.XXX.com
バージニア北部※ XXX.com

※ CloudFrontがバージニア北部でのみ設定可能なため。

ドメイン(ホストゾーン)の設定

レコード名 タイプ
XXX.com A クラウドフロントのドメイン
api.XXX.com A ロードバランサードメイン
XXX.com NS (自動生成)
XXX.com SOA (自動生成)
_XXX.XXX.com CNAME 証明書のCNAME(Web用)
_XXX.XXX.com CNAME 証明書のCNAME(API用)