[AWS](WA)EC2 Web アプリケーションの自動デプロイメント(WordPress)

AWS

元ネタ

AWSのWell-Architected Frameworkを改めて整理。せっかくなんでハンズオン形式で学べるAWS Well-Architected Labsをやってみよう!ということで、備忘も兼ねて実践&記録をしてみました。

Workshop Studio
Discover and participate in AWS workshops and GameDays

前提条件

  • AWSのrootアカウントがあること
  • 以下ハンズオンで作成したVPCスタックがデプロイされていること

ハンズオン開始

0. 概要

このハンズオンラボでは、Amazon EC2で Web アプリケーションを設定する手順を説明します。 多数の AWS セキュリティのベストプラクティスを組み込んだ多層防御アプローチを採用しています。

この例は、包括的な WordPress システムを意図したものではありません。詳細については「WordPress ウェブサイトの構築」を参照してください。

CloudFormationテンプレートの内容

作成した VPC 内に、サンプルの CloudFormation テンプレートを使用して Web アプリケーションとすべてのコンポーネントを作成します。作成されるコンポーネントには次のものが含まれます。

  • アプリケーションロードバランサ
  • Web インスタンスの Auto Scaling グループ
  • 自動スケールされたインスタンスにアタッチされたロールにより、一時的なセキュリティ認証情報の使用が可能になります
  • インスタンスは管理に SSH ではなく Systems Manager を使用します
  • Amazon Aurora サーバーレス データベース クラスター
  • データベースクラスターのシークレットマネージャーシークレット
  • Aurora データベースのキー管理には AWS Key Management Service が使用されます
  • ネットワーク トラフィックを制限するためのロード バランサーと Web インスタンスのセキュリティ グループ
  • Web インスタンスのカスタム CloudWatch メトリクスとログ
  • Systems Manager と CloudWatch に権限を付与する Web インスタンスの IAM ロール

1. VPCスタックの作成

CloudFormationテンプレートを使ってVPCスタックを作成します。

VPCスタック作成手順

  1. こちらのテンプレートファイルを予めダウンロードする。
  2. CloudFormationコンソールよりスタックを開き、「スタックの作成」にある「新しいリソースを使用(標準)」を選択する。
  1. 「スタックの作成」より「テンプレートの準備」に「テンプレートの準備完了」を、「テンプレートソース」に「テンプレートファイルのアップロード」を選択の上、「ファイルの選択」よりダウンロードしたテンプレートファイルをアップロードし、「次へ」を選択する。
  1. 「スタック名」に「WebApp1-WordPress」を入力する。
  1. 「パラメータ」は以下を参考に入力する。ALBSGSource以外はデフォルトでOK。

ALBSGSource: アプリケーション ロード バランサーへの接続を許可される CIDR 表記の現在の IP アドレス。これにより、構成およびテスト中に Web アプリケーションが公開から保護されます。

項目名説明入力値(デフォルト)
NamingPrefixこのテンプレートによって作成されたリソースの名前付けプレフィックス。WebApp1
VPCImportNameインポートする VPC スタックの CloudFormation 名WebApp1-VPC
VPCImportApp1Instance1Subnet1サブネット 1 にインポートする VPC スタックからのサブネットの名前App1Subnet1
VPCImportApp1Instance1Subnet2サブネット 2にインポートする VPC スタックからのサブネットの名前App1Subnet2
VPCImportApp1Instance1Subnet3サブネット 3にインポートする VPC スタックからのサブネットの名前App1Subnet3
VPCImportALB1Subnet1VPC スタックからインポートするサブネットの名前ALB1Subnet1
VPCImportALB1Subnet2VPC スタックからインポートするサブネットの名前ALB1Subnet2
VPCImportALB1Subnet3VPC スタックからインポートするサブネットの名前ALB1Subnet3
VPCImportDB1Subnet1VPC スタックからインポートするサブネットの名前DB1Subnet1
VPCImportDB1Subnet2VPC スタックからインポートするサブネットの名前DB1Subnet2
VPCImportDB1Subnet3VPC スタックからインポートするサブネットの名前DB1Subnet3
LatestAmiId/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
InstanceTypeWebサーバーEC2インスタンスタイプt3.micro
ALBSGSourceALB の背後にある WordPress インスタンスにアクセスするために使用される IP アドレス範囲。0.0.0.0/0
Web1AutoScaleDesiredAuto Scaling グループ内の Web インスタンスの必要な数1
DB1NameWordPress データベース名wordpressdb
  1. 「次へ」を選択する。
  2. 「スタックオプションの設定」では必要に応じてタグを設定し、「次へ」を選択する。
  1. 「レビュー」に内容を確認の上、最下部にある「AWS CloudFormationによってIAMリソースがカスタム名で作成される場合があることを承認します。」のチェックボックスをオンにし、「送信」を選択する。
  1. ステータスが「CREATE_IN_PROGRESS」から「CREATE_COMPLETE」に変われば終了となる。
  1. スタックの詳細を開き、「出力」タブを「WebsiteURL」の値をブラウザで開き、Webアプリケーションを確認する。
自分
自分

このハンズオンで使用しているCloudFormationテンプレートではエラーが発生し、スタックの作成に失敗します。

テンプレートを変更し、何度か試し、作成完了までいきましたが、DBClusterがやはりきれいにできなかったです。

見直した後に更新します。

Appendix. クリーンアップ手順

作成したリソースのクリーンアップ手順です。

CloudFormationスタック削除手順

  1. CloudFormationコンソールよりスタックを開き、「WebApp1-Wordpress」をオンにした上で、「削除」を選択する。
  1. 「スタックを削除しますか?」を確認し、「削除」を選択する。
  1. 削除開始のメッセージを確認する。リストから削除されたら完了となる。
タイトルとURLをコピーしました