元ネタ
AWSのWell-Architected Frameworkを改めて整理。せっかくなんでハンズオン形式で学べるAWS Well-Architected Labsをやってみよう!ということで、備忘も兼ねて実践&記録をしてみました。
Workshop Studio
Discover and participate in AWS workshops and GameDays
前提条件
- AWSのrootアカウントがあること
ハンズオン開始
0. 概要
このハンズオンラボではAWS CloudFormationを使用します Amazon VPCを作成するには 利用可能な AWS セキュリティ機能のいくつかを概説します。CloudFormation を使用してデプロイを自動化すると、繰り返し作成および更新できる方法が提供され、このラボの後にテンプレートを再利用できます。
CloudFormationテンプレートの内容
以下を含む多くの AWS セキュリティのベストプラクティスを組み込んだまったく新しい VPC をデプロイします。
ネットワーキングサブネット 次のネットワーク層の 3 つのアベイラビリティ ゾーンに作成されます。
- Application Load Balancer - ALB1という名前
- アプリケーション インスタンス - App1という名前
- 共有サービス - Shared1という名前
- データベース - DB1という名前
- VPC エンドポイント AWS サービスへのプライベート接続用に作成されます。App1SubnetsPrivateLinkEndpoints CloudFormation パラメーターを使用して、アプリケーション層に対して追加のエンドポイントを有効にすることができます。
- NATゲートウェイ ルート テーブルで定義されているように、直接のイングレス アクセスを行わずに、VPC 内のサブネットがインターネットに接続できるようにするために作成されます。 。
- ネットワークACL 各サブネット層でのアクセスを制御します。
- VPC フローログ IP トラフィックに関する情報をキャプチャし、Amazon CloudWatch Logs に保存します。
1. VPCスタックの作成
CloudFormationテンプレートを使ってVPCスタックを作成します。
VPCスタック作成手順
- こちらのテンプレートファイルを予めダウンロードする。
- CloudFormationコンソールよりスタックを開き、「スタックの作成」にある「新しいリソースを使用(標準)」を選択する。
- 「スタックの作成」より「テンプレートの準備」に「テンプレートの準備完了」を、「テンプレートソース」に「テンプレートファイルのアップロード」を選択の上、「ファイルの選択」よりダウンロードしたテンプレートファイルをアップロードし、「次へ」を選択する。
- 「スタック名」に「WebApp1-VPC」を入力する。
- 「パラメータ」は以下を参考に入力する。デフォルトでOK。
項目名 | 説明 | 入力値(デフォルト) |
---|---|---|
NamingPrefix | このテンプレートによって作成されたリソースの名前付けプレフィックス、および他のスタックによって参照できるエクスポートされた値。 | WebApp1 |
VPCIPv4CidrBlock | IPv4 の VPC CIDR ブロック。 テストにはデフォルトの 10.0.0.0/16 をお勧めします。 | 10.0.0.0/16 |
VPCSubnetIPv4Size | 各サブネットのホスト ビット マスク長、例: デフォルトの 8 は /24 サブネット サイズになります。 | 8 |
VPCNumberOfIPv4Subnets | VPC CIDR ブロック内に作成される同じサイズの IPv4 サブネットの数。 テストにはデフォルトの 256 を推奨します。 | 256 |
VPCSubnetIPv6Size | 各サブネットのホスト ビット マスク長、例: デフォルトの 64 は、/64 サブネット サイズになります。 | 64 |
VPCNumberOfIPv6Subnets | VPC CIDR ブロック内に作成される同じサイズの IPv6 サブネットの数。 | 256 |
VPCFlowLogRetention | VPC フロー ログの保持期間 (日単位)。 このスタックが削除されると、VPC フロー ログも削除されることに注意してください。 | 90 |
ALB1SubnetsEnabled | アプリケーション ロード バランサー (ALB) 層のサブネットとその他のリソースを作成します。 False は、ALB 層を完全に無効にします。 | true |
App1SubnetsInternetRoute | アプリケーション サブネットは、Nat ゲートウェイ (IPv4) または出力専用インターネット ゲートウェイ (IPv6) を介してインターネットにルーティングします。 true に設定した場合は、共有層も有効にする必要があります。 | true |
App1SubnetsPrivateLinkEndpoints | VPC エンドポイントを使用すると、NAT ゲートウェイ経由ではなく、サブネット内でプライベートにサンプルの一般的な AWS サービスにアクセスできます。 テスト目的のため、NAT ゲートウェイはエンドポイント サービスを有効にするよりコスト効率が高いことに注意してください。 | false |
DB1SubnetsEnabled | データベース (DB) 層のサブネットとその他のリソースを作成します。 False は DB 層を完全に無効にします。 | true |
DB1TCPPortNumber | DB 層で Network ACL (NACL) に使用される TCP/IP ポート番号。 MySQL のデフォルトは 3306 です。 例; PostgreSQL の場合は 5432、SQL Server の場合は 1433、Memcache/Elasticache の場合は 11211、Redis の場合は 6379。 | 3306 |
Shared1SubnetsEnabled | 共有層のサブネットを作成します。 共有層にはアプリケーション層の IPv4 トラフィックがインターネットに接続できるようにする NAT ゲートウェイが含まれるため、インターネットへのアプリケーション ルート パラメーターを有効にする場合は true に設定します。 False は共有層を完全に無効にします。 | true |
- 「次へ」を選択する。
- 「スタックオプションの設定」では必要に応じてタグを設定し、「次へ」を選択する。
- 「レビュー」に内容を確認の上、最下部にある「AWS CloudFormationによってIAMリソースがカスタム名で作成される場合があることを承認します。」のチェックボックスをオンにし、「送信」を選択する。
- ステータスが「CREATE_IN_PROGRESS」から「CREATE_COMPLETE」に変われば終了となる。
Appendix. クリーンアップ手順
作成したリソースのクリーンアップ手順です。
CloudFormationスタック削除手順
- CloudFormationコンソールよりスタックを開き、「WebApp1-VPC」をオンにした上で、「削除」を選択する。
- 「スタックを削除しますか?」を確認し、「削除」を選択する。
- 削除開始のメッセージを確認する。リストから削除されたら完了となる。