元ネタ
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スタック作成手順
- こちらのテンプレートファイルを予めダウンロードする。
- CloudFormationコンソールよりスタックを開き、「スタックの作成」にある「新しいリソースを使用(標準)」を選択する。
- 「スタックの作成」より「テンプレートの準備」に「テンプレートの準備完了」を、「テンプレートソース」に「テンプレートファイルのアップロード」を選択の上、「ファイルの選択」よりダウンロードしたテンプレートファイルをアップロードし、「次へ」を選択する。
- 「スタック名」に「WebApp1-WordPress」を入力する。
- 「パラメータ」は以下を参考に入力する。ALBSGSource以外はデフォルトでOK。
項目名 | 説明 | 入力値(デフォルト) |
---|---|---|
NamingPrefix | このテンプレートによって作成されたリソースの名前付けプレフィックス。 | WebApp1 |
VPCImportName | インポートする VPC スタックの CloudFormation 名 | WebApp1-VPC |
VPCImportApp1Instance1Subnet1 | サブネット 1 にインポートする VPC スタックからのサブネットの名前 | App1Subnet1 |
VPCImportApp1Instance1Subnet2 | サブネット 2にインポートする VPC スタックからのサブネットの名前 | App1Subnet2 |
VPCImportApp1Instance1Subnet3 | サブネット 3にインポートする VPC スタックからのサブネットの名前 | App1Subnet3 |
VPCImportALB1Subnet1 | VPC スタックからインポートするサブネットの名前 | ALB1Subnet1 |
VPCImportALB1Subnet2 | VPC スタックからインポートするサブネットの名前 | ALB1Subnet2 |
VPCImportALB1Subnet3 | VPC スタックからインポートするサブネットの名前 | ALB1Subnet3 |
VPCImportDB1Subnet1 | VPC スタックからインポートするサブネットの名前 | DB1Subnet1 |
VPCImportDB1Subnet2 | VPC スタックからインポートするサブネットの名前 | DB1Subnet2 |
VPCImportDB1Subnet3 | VPC スタックからインポートするサブネットの名前 | DB1Subnet3 |
LatestAmiId | /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 | |
InstanceType | WebサーバーEC2インスタンスタイプ | t3.micro |
ALBSGSource | ALB の背後にある WordPress インスタンスにアクセスするために使用される IP アドレス範囲。 | 0.0.0.0/0 |
Web1AutoScaleDesired | Auto Scaling グループ内の Web インスタンスの必要な数 | 1 |
DB1Name | WordPress データベース名 | wordpressdb |
- 「次へ」を選択する。
- 「スタックオプションの設定」では必要に応じてタグを設定し、「次へ」を選択する。
- 「レビュー」に内容を確認の上、最下部にある「AWS CloudFormationによってIAMリソースがカスタム名で作成される場合があることを承認します。」のチェックボックスをオンにし、「送信」を選択する。
- ステータスが「CREATE_IN_PROGRESS」から「CREATE_COMPLETE」に変われば終了となる。
- スタックの詳細を開き、「出力」タブを「WebsiteURL」の値をブラウザで開き、Webアプリケーションを確認する。
自分
このハンズオンで使用しているCloudFormationテンプレートではエラーが発生し、スタックの作成に失敗します。
テンプレートを変更し、何度か試し、作成完了までいきましたが、DBClusterがやはりきれいにできなかったです。
見直した後に更新します。
Appendix. クリーンアップ手順
作成したリソースのクリーンアップ手順です。
CloudFormationスタック削除手順
- CloudFormationコンソールよりスタックを開き、「WebApp1-Wordpress」をオンにした上で、「削除」を選択する。
- 「スタックを削除しますか?」を確認し、「削除」を選択する。
- 削除開始のメッセージを確認する。リストから削除されたら完了となる。