AWS設計・構築の記録

お世話になっております、クラウド事業部の稲村です。
社内プロジェクトの一環で、マルチAZのアーキテクチャを構築する機会がございました。
非常に勉強になりましたので、その構築の流れと学びを備忘録としてまとめたいと思います。


構成図


使用技術

AWSサービス

  • VPC
  • EC2
  • ALB
  • RDS
  • S3
  • EFS
  • Route53
  • ACM
  • CloudWatch
  • SMSS

OS

  • Amazon Linux 2023

DB

  • MySQL 8.0.41

Webサーバ

  • Apache 2.4.62

VPCとサブネットの作成

パラメータ

VPC_CIDRブロック
10.0.0.0/16
AZ 種類 CIDR
ap-northeast-3a public subnet 10.0.0.0/20
ap-northeast-3a private subnet 10.0.48.0/20
ap-northeast-3a protect subnet 10.0.96.0/20
ap-northeast-3b public subnet 10.0.16.0/20
ap-northeast-3b private subnet 10.0.64.0/20
ap-northeast-3b protect subnet 10.0.112.0/20

構築手順

作成画面 → VPC > VPCを作成
※以降の構築手順で明記していない設定項目についてはデフォルトの状態で設定しています。

設定項目

  • 名前タグの自動生成
    任意のVPC名(以降便宜上、inamuray-vpcと記載します)
  • IPv4 CIDRブロック
    10.0.0.0/16
  • アベイラビリティゾーン (AZ) の数
    2
  • パブリックサブネットの数
    2
  • プライベートサブネットの数
    4
  • サブネットCIDRブロックをカスタマイズ
    任意のCIDRブロックを設定
  • NAT ゲートウェイ
    AZごとに1

セキュリティグループの作成

パラメータ

  • EC2用SG
ルール タイプ プロトコル ポート範囲 送信先
Inbound HTTP TCP 80 0.0.0.0/0
Outbound すべてのトラフィック すべて すべて 0.0.0.0/0
  • ALB用SG
ルール タイプ プロトコル ポート範囲 送信先
Inbound HTTPS TCP 443 0.0.0.0/0
Inbound HTTP TCP 80 0.0.0.0/0
Outbound すべてのトラフィック すべて すべて 0.0.0.0/0
  • RDS用SG
ルール タイプ プロトコル ポート範囲 送信先
Inbound MySQL TCP 3306 EC2用SG
Outbound すべてのトラフィック すべて すべて 0.0.0.0/0
  • EFS用SG
ルール タイプ プロトコル ポート範囲 送信先
Inbound NFS TCP 2049 EC2用SG
Outbound すべてのトラフィック すべて すべて 0.0.0.0/0
  • SSM用SG
ルール タイプ プロトコル ポート範囲 送信先
Inbound HTTPS TCP 443 EC2用SG
Outbound すべてのトラフィック すべて すべて 0.0.0.0/0

構築手順

作成画面 → VPC > セキュリティグループ > セキュリティグループを作成

設定項目

手順に沿ってそれぞれのセキュリティグループを作成。

  • セキュリティグループ名
    任意のセキュリティグループ名を設定
  • 説明
    任意の説明文を記載
  • インバウンドルール
    上記のパラメータに沿ってルールを追加
  • アウトバウンドルール
    上記のパラメータに沿ってルールを追加

IAMロール作成

構築手順

作成画面 IAM > ロール > ロールを作成

  • ユースケース
    EC2
  • 許可ポリシー
    • AmazonSSMManagedInstanceCore
    • CloudWatchAgentServerPolicy
  • ロール名
    任意のロール名を設定

EC2構築

構築手順

作成画面 :EC2 > インスタンス > インスタンスを起動

設定項目

  • 名前
    インスタンスに付与する任意の名前を設定
  • Amazonマシンイメージ(AMI)
    Amazon Linux 2023 kernel-6.1 AMI
  • インスタンスタイプ
    t3.micro
  • キーペア
    新しいキーペアを作成し、選択
  • ネットワーク
    inamuray-vpcを選択
  • ファイアウォール(セキュリティグループ)
    EC2用SGを選択
  • IAM インスタンスプロフィール
    作成したIAMロールをアタッチ

RDS構築

構築手順

サブネットグループの作成

作成画面 :RDS > サブネットグループ > DBサブネットグループを作成

設定項目

  • 名前
    任意のサブネットグループ名
  • 説明
    任意の説明文を記載
  • VPC
    inamuray-vpc
  • アベイラビリティゾーン
    サブネットが所属しているAZを選択
  • サブネット
    protect subnetを2つ選択

RDSの作成

設定項目

作成画面 :データベース > データベースの作成

  • エンジンのオプション
    MySQL
  • 説明
    任意の説明文を記載
  • VPC
    inamuray-vpc
  • アベイラビリティゾーン
    サブネットが所属しているAZを選択
  • サブネット
    protect subnetを2つ選択

SSM接続設定

パラメータ

  • 下記サービスのエンドポイントを作成
    • com.amazonaws.ap-northeast-3.ssm
    • com.amazonaws.ap-northeast-3.ssmmessages
    • com.amazonaws.ap-northeast-3.ec2messages

構築手順

作成画面 :VPC > エンドポイント > エンドポイントの作成
※まとめてサービスを選択できないので、一つずつエンドポイントを作成

設定項目

  • 名前タグ
    任意の名前を指定
  • サービス
    上記のサービスを選択
  • VPC
    inamuray-vpc
  • サブネット
    EC2が配置されているサブネット(private subnet)を選択
  • セキュリティグループ
    SSM用SGを選択

ALB構築

ターゲットグループの作成

作成画面 :EC2 > ターゲットグループ > ターゲットグループの作成

設定項目

  • ターゲットグループ名
    ターゲットグループの名前を設定
  • VPC
    inamuray-vpc
  • 使用可能なインスタンス
    作成したインスタンスを選択し、ターゲットグループに登録

ALBの作成

作成画面 :EC2 > ロードバランサー > ロードバランサーの作成

設定項目

  • ロードバランサー名
    任意の名前を設定
  • アベイラビリティーゾーンとサブネット
    public subnetを選択
  • セキュリティグループ
    ALB用SGを選択

Route53(DNSレコードの作成)

構築手順

※今回は既存のホストゾーンを使用
作成画面 :Route53 > ホストゾーン > ホストゾーンを選択 > レコードを作成

設定項目

  • レコード名
    任意のレコード名を設定
  • エイリアス
    有効
  • エンドポイント
    Application Load BalancerとClasic Load Balancerへのエイリアス
  • リージョン
    VPCが所属するリージョンを選択
  • ロードバランサーを選択
    対象のロードバランサーを選択

証明書の取得(ACM)

構築手順

作成画面 :Certificate Manager > リクエスト

設定項目

  • 完全修飾ドメイン名
    Route53で作成したレコードを記載

リクエスト後「Route53でレコードを作成」を押下し、Route53へレコードを作成


ALBリスナー、HTTP→HTTPSへのリダイレクト設定

HTTPSリスナーの作成

構築手順

作成画面 :EC2 > ロードバランサー > albを選択 > リスナーとルール > リスナーの追加

設定項目

  • プロトコル
    HTTPS
  • ポート
    443
  • アクションのルーティング
    ターゲットグループへ転送
  • ターゲットグループ
    作成したターゲットグループを選択
  • 証明書 (ACM から)
    作成した証明書を選択

HTTP→HTTPSへのリダイレクト設定

構築手順

作成画面 :EC2 > ロードバランサー > albを選択 > リスナーとルール > リスナーの追加

設定項目

  • プロトコル
    HTTP
  • ポート
    80
  • アクションのルーティング
    URLにリダイレクト
  • プロトコル
    HTTPS
  • ポート
    443

S3構築、ALBアクセスログの取得

S3構築

構築手順

作成画面 :S3 > 汎用バケット > バケットを作成

設定項目

  • バケット名
    任意のバケット名を設定
  • 暗号化タイプ
    Amazon S3 マネージドキーを使用したサーバー側の暗号化 (SSE-S3)
  • このバケットのブロックパブリックアクセス設定
    下記にチェック
    ・新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
    ・任意のアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
  • ターゲットグループ
    作成したターゲットグループを選択
  • 証明書 (ACM から)
    作成した証明書を選択

ALBのアクセスログ取得

構築手順

作成画面 :EC2 > ロードバランサー > albを選択 > アクション > ロードバランサー属性を編集

設定項目

  • モニタリング
    アクセスログを有効にする

SNSトピック作成

トピックの作成

構築手順

作成画面 :Simple Notification Service > トピック > トピックの作成

設定項目

  • タイプ
    スタンダード
  • 名前
    任意の名前
  • 表示名
    任意の表示名(今回は名前と同様に設定)

サブスクリプションの作成

設定項目

  • プロトコル
    Eメール
  • エンドポイント
    送信先メールアドレス

送信先メールアドレス宛に送られたメールで認証を行う


CloudWatch監視設定

CWAgentインストール、設定

構築手順

  1. CWAgentを各EC2にインストール
  2. Wizardを起動し、設定ファイルを編集
  3. CWAgentを起動

HealthyHostCount(ALB)

構築手順

作成画面 :CloudWatch > すべてのアラーム > アラームの作成 > ApplicationELB > HealthyHostCountを選択

設定項目

  • TargetGroup
    監視対象のTargetGroupのサフィックス
  • LoadBalancer
    監視対象ALBのサフィックス
  • 条件
    以下
  • 閾値
    0

CPUUtilization(EC2)

構築手順

作成画面 :CloudWatch > すべてのアラーム > アラームの作成 > EC2 > CPUUtilizationを選択
※閾値が80%と90%の場合で監視を設定

設定項目

  • InstanceId
    監視するEC2インスタンスのInstanceID
  • 条件
    以上
  • 閾値
    80

mem_used_percent(EC2)

構築手順

CWAgentのインストール・起動が完了後に実施
作成画面 :CloudWatch > すべてのアラーム > アラームの作成 > CWAgent > mem_used_percentを選択
※閾値が80%と90%の場合で監視を設定

設定項目

  • InstanceId
    監視するEC2インスタンスのInstanceID
  • 条件
    以上
  • 閾値
    80

感想

AWSの仕組みやインフラの可用性、耐久性の実現方法等、今回のプロジェクトでは非常に学びが多かったです。
本格的なインフラ環境を構築できた経験はとても大きなものだと感じており、今後も様々なアーキテクチャの構築に取り組んでいきたいと思いました。現在は、同様のアーキテクチャをAWS CLIを用いて構築しております。不慣れなためエラーが何度も発生し時折大変ですが、コンソールで作成した時と比べミスが減り、再現性や作業効率も格段に向上してとても感動しました。
今回のプロジェクトでAWSの様々な技術に興味が湧き、AWSエンジニアとして良い一歩を踏み出せたと思います。
今後は、毎日技術力を磨き続け一日でも早く、お客様に貢献できるエンジニアに成長したいです。
今後ともぜひ、よろしくお願いいたします。

Last modified: 2025-07-17

Author