AWSでWebサイトを構築する方法

AWS

このブログはAWSで構築してみました。
仕事ではオンプレに触れることが多く、クラウド構築は全くの未経験でした。
AWS初心者が独学で構築できたので、誰でも同じようなWebサイトが構築できるはずです。

アクセスがほぼ無いブログなので冗長構成にする必要はないですが、インフラの勉強の為にWebサーバとDBサーバを2台にしてみました。

構成はこんな感じです。 

これを構築するまでの流れは以下のとおりです。

  1. アカウント(ルートユーザー)作成
  2. IAMユーザー作成
  3. MFA設定
  4. 請求情報アクセス有効化
  5. VPC作成
  6. サブネット作成
  7. インターネットゲートウェイ作成
  8. ルートテーブル作成
  9. セキュリティグループ作成
  10. キーペア作成
  11. インスタンス起動
  12. Elastic IPアドレス関連付け
  13. DBサブネットグループ作成
  14. データベース作成
  15. ドメイン登録
  16. SSL/TLS証明書リクエスト
  17. ターゲットグループ作成
  18. ロードバランサー作成
  19. エイリアスレコード作成
  20. SSH接続
  21. Apacheインストール
  22. PHPインストール
  23. MySQLインストール
  24. WordPressインストール

詳しい人から見れば、あえて作業を分割しているように感じると思います。
例えば、「11.インスタンス起動」の際に「10.キーペア作成」をまとめて作成することもできます。

実際に構築してみた感想になりますが、複数の項目をまとめて作成すると、「それがなぜ必要なのか」が分かり難いように感じました。

この順番で構築すれば、きっと誰でも理解できるはずです。

01. アカウント(ルートユーザー)作成

ルートユーザーはMFAを設定して、最小限の利用にします。PCの管理者権限と同じようなものです。

① AWSのページを開いて右上の[AWSアカウントを作成]を選択する

② 「Eメールアドレス」と「AWSアカウント名」を入力する

③ 「連絡先情報」「クレジットカード番号」「サポートプラン」を設定する

02. IAMユーザー作成

ユーザー毎に最小限の権限を付与したIAMユーザーを作成します。特権のあるIAMユーザーにはMFAを設定します。

① 検索窓に『ユーザー』を入力して[ユーザー]を選択する

② 画面右上の[ユーザーの作成]を選択する

③ 任意のユーザー名を入力して[-オプション]をチェックする

④ [IAMユーザーを作成します]を選択して[次へ]を選択する

⑤ [ポリシーを直接アタッチする]を選択して「許可ポリシー」から[AdministratorAccess]をチェックして[次へ]を選択する

⑥ 入力した内容を確認して[ユーザーの作成]を選択する(パスワードは必ず控える)

⑦ IAMユーザーでログインする
  ”https://(12桁のアカウントID).signin.aws.amazon.com/console”

03. MFA設定

ルートユーザーと特権のあるIAMユーザーには他要素認証(MFA)を使用することを推奨します。

① スマートフォンに「Google Authenticator」をインストールする

② 右上のユーザー名から[セキュリティ認証情報]を選択する

③ [MFAデバイスの割り当て]を選択する

④ 任意のデバイス名を入力して、使用するMFAデバイスから[Authenticator app]を選択して[次へ]を選択する

⑤ スマートフォンの「Google Authenticator」からQRコードをスキャンする

⑥ MFAコードを入力して[MFAを追加]を選択する

04. 請求情報アクセス有効化

ルートユーザーは殆どログインしないので、IAMユーザーで請求情報を確認できると便利です。

① ルートユーザーでログインする

② 右上のユーザー名から[アカウント]を選択する

③ [IAMユーザーおよびロールによる請求情報へのアクセス」までスクロールして[編集]を選択する

④ [IAMアクセスのアクティブ化]をチェックして[更新]を選択する

05. VPC作成

クラウド上にプライベートな仮想ネットワーク環境を構築します。複数のVPCを接続することも可能ですが、まずはひとつで大丈夫です。特別な理由がない限り、リージョンは米国東部(バージニア北部)で作成します。

① 画面上部のリージョンが「バージニア北部」になっていることを確認する

② 検索窓に『VPC』を入力して[VPC]を選択する

③ 自動で作成されているデフォルトVPCを削除する

④ 画面右上の[VPCを作成]を選択する

⑤ 「作成するリソース」で[VPCのみ]を選択する

⑥ 「名前タグ」に任意の名前を付ける

⑦ 「IPv4 CIDR ブロック」で[~の手動入力]を選択して『10.0.0.0/16』を入力する

⑧ その他はデフォルトのままで[VPCの作成]を選択する

06. サブネット作成

作成したVPCの中に、さらに細かくしたネットワークを作成します。パブリックとプライベートに分ける場合やマルチAZで運用する場合は、事前に複数のIPアドレスを考えておくことをお勧めします。パブリックサブネットとプライベートサブネットは同じAZ内に作成して、マルチAZで運用する場合は別のAZでもサブネットを作成します。

① 検索窓に『サブネット』を入力して[サブネット]を選択する

② デフォルトのサブネットにチェックを入れて[アクション]から[サブネットを削除]を選択する

③ [サブネットを作成]を選択する

④ 「VPC ID」は作成済みのVPCを選択する

⑤ 「サブネット名」にパブリックとプライベートが識別しやすい任意の名前を入力する

⑥「アベイラビリティーゾーン」は任意のもの(一番上で構わない)を選択する

⑦ 「IPv4 サブネット CIDR ブロック」はVPCのCIDR内に収まるように『10.0.●.0/24』(任意のサブネット)を入力する

⑧ パブリックとプライベートに分ける場合やマルチAZで運用する場合は[新しいサブネットを追加]を選択する

⑨ 必要なサブネットの作成が終わったら[サブネットを作成]を選択する

07. インターネットゲートウェイ作成

VPCからインターネットに接続するための出入口となり、VPC内のパブリックサブネットと接続されます。つまりプライベートサブネットはインターネットゲートウェイに接続されません。

① 検索窓に『インターネットゲートウェイ』を入力して[インターネットゲートウェイ]を選択する

② 画面右上の[インターネットゲートウェイの作成]を選択する

③ 「名前タグ」に任意の名前を入力して[インターネットゲートウェイの作成]を選択する

④ 画面右上の[アクション]から[VPCにアタッチ]を選択する

⑤ 「使用可能なVPC」で作成済みのVPCを選択して[インターネットゲートウェイのアタッチ]を選択する

08. ルートテーブル作成

オンプレでも用いられるルーティングテーブルと同じ考え方で、VPC内で通信を振り分けるためのルールを作成します。デフォルトでVPC内(local)の接続は許可されているので、パブリックサブネットにはインターネットゲートウェイを関連付け、プライベートサブネットには何も関連付けせずVPC内のみ接続できる状態にします。

① 検索窓に『ルートテーブル』を入力して[ルートテーブル]を選択する

② 画面右上の[アクション]から[ルートテーブルを作成]を選択する

③ 「名前」にパブリックサブネット用の任意の名前を入力する

④ 「VPC」は作成済みのVPCを選択して[ルートテーブルを作成]を選択する

⑤ 作成したルートテーブルにチェックを入れて画面右上の[アクション]から[ルートを編集]を選択する

⑥ [ルートを追加]を選択して「送信先」と「ターゲット」に[0.0.0.0/0]と[インターネットゲートウェイ]を選択後、[変更を保存]を選択する

⑦ 作成したルートテーブルにチェックを入れて[アクション]から[サブネットの関連付けを編集]を選択する

⑧ 「利用可能なサブネット」から作成済みのパブリックサブネットにチェックを入れて[関連付けを保存]を選択する

⑩ [アクション]から[ルートテーブルを作成]を選択してプライベートサブネット用のルートテーブルを作成する

⑪ プライベートサブネット用のルートテーブルにチェックを入れて[アクション]から[サブネットの関連付けを編集]を選択してプライベートサブネットを関連付ける

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

VPC内に構築するEC2インスタンスに対してホワイトリストでファイアウォールとして機能するルールを作成します。似たものとしてネットワークACLがありますが、ネットワークACLはブラックリストのように機能するため、基本的にはセキュリティグループのみ設定することをお勧めします。
http及びhttpsはALBを経由させて、ALBからパブリックサブネットまではhttpを通したいので、冗長構成やパブリック/プライベートを想定した設定を作成します。

① 検索窓に『セキュリティグループ』を入力して[セキュリティグループ]を選択する

② 画面右上から[セキュリティグループを作成]を選択する

③ 「セキュリティグループ名」にALB用の任意の名前を入力して「VPC」は作成済みのVPCを選択する

④ 「インバウンドルール」の[ルールを追加]を選択して「タイプ」「リソースタイプ」「ソース」で[HTTP] [Anywhere-IPv4] [0.0.0.0/0] を選択する

⑤ 同様に[ルールを追加]を選択してHTTPSも作成する

⑥ 「アウトバウンドルール」の[ルールを追加]を選択して「タイプ」「送信先タイプ」「送信先」で[すべてのトラフィック] [カスタム] []

インバウンドルールと同じ項目で[すべてのトラフィック] [] [] 「タイプ」で[すべてのトラフィック]を選択したら[セキュリティグループを作成]を選択する

10. キーペア作成

11. インスタンス起動

12. Elastic IPアドレス関連付け

13. DBサブネットグループ作成

14. データベース作成

15. ドメイン登録

16. SSL/TLS証明書リクエスト

17. ターゲットグループ作成

18. ロードバランサー作成

19. エイリアスレコード作成

20. SSH接続

21. Apacheインストール

22. PHPインストール

23. MySQLインストール

24. WordPressインストール