[AWS](WA)VPC の自動デプロイメント

AWS

元ネタ

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スタック作成手順

  1. こちらのテンプレートファイルを予めダウンロードする。
  2. CloudFormationコンソールよりスタックを開き、「スタックの作成」にある「新しいリソースを使用(標準)」を選択する。
  1. 「スタックの作成」より「テンプレートの準備」に「テンプレートの準備完了」を、「テンプレートソース」に「テンプレートファイルのアップロード」を選択の上、「ファイルの選択」よりダウンロードしたテンプレートファイルをアップロードし、「次へ」を選択する。
  1. 「スタック名」に「WebApp1-VPC」を入力する。
  1. 「パラメータ」は以下を参考に入力する。デフォルトでOK。
項目名説明入力値(デフォルト)
NamingPrefixこのテンプレートによって作成されたリソースの名前付けプレフィックス、および他のスタックによって参照できるエクスポートされた値。WebApp1
VPCIPv4CidrBlockIPv4 の VPC CIDR ブロック。 テストにはデフォルトの 10.0.0.0/16 をお勧めします。10.0.0.0/16
VPCSubnetIPv4Size各サブネットのホスト ビット マスク長、例: デフォルトの 8 は /24 サブネット サイズになります。8
VPCNumberOfIPv4SubnetsVPC CIDR ブロック内に作成される同じサイズの IPv4 サブネットの数。 テストにはデフォルトの 256 を推奨します。256
VPCSubnetIPv6Size各サブネットのホスト ビット マスク長、例: デフォルトの 64 は、/64 サブネット サイズになります。64
VPCNumberOfIPv6SubnetsVPC CIDR ブロック内に作成される同じサイズの IPv6 サブネットの数。256
VPCFlowLogRetentionVPC フロー ログの保持期間 (日単位)。 このスタックが削除されると、VPC フロー ログも削除されることに注意してください。90
ALB1SubnetsEnabledアプリケーション ロード バランサー (ALB) 層のサブネットとその他のリソースを作成します。 False は、ALB 層を完全に無効にします。true
App1SubnetsInternetRouteアプリケーション サブネットは、Nat ゲートウェイ (IPv4) または出力専用インターネット ゲートウェイ (IPv6) を介してインターネットにルーティングします。 true に設定した場合は、共有層も有効にする必要があります。true
App1SubnetsPrivateLinkEndpointsVPC エンドポイントを使用すると、NAT ゲートウェイ経由ではなく、サブネット内でプライベートにサンプルの一般的な AWS サービスにアクセスできます。 テスト目的のため、NAT ゲートウェイはエンドポイント サービスを有効にするよりコスト効率が高いことに注意してください。false
DB1SubnetsEnabledデータベース (DB) 層のサブネットとその他のリソースを作成します。 False は DB 層を完全に無効にします。true
DB1TCPPortNumberDB 層で Network ACL (NACL) に使用される TCP/IP ポート番号。 MySQL のデフォルトは 3306 です。 例; PostgreSQL の場合は 5432、SQL Server の場合は 1433、Memcache/Elasticache の場合は 11211、Redis の場合は 6379。3306
Shared1SubnetsEnabled共有層のサブネットを作成します。 共有層にはアプリケーション層の IPv4 トラフィックがインターネットに接続できるようにする NAT ゲートウェイが含まれるため、インターネットへのアプリケーション ルート パラメーターを有効にする場合は true に設定します。 False は共有層を完全に無効にします。true
  1. 「次へ」を選択する。
  2. 「スタックオプションの設定」では必要に応じてタグを設定し、「次へ」を選択する。
  1. 「レビュー」に内容を確認の上、最下部にある「AWS CloudFormationによってIAMリソースがカスタム名で作成される場合があることを承認します。」のチェックボックスをオンにし、「送信」を選択する。
  1. ステータスが「CREATE_IN_PROGRESS」から「CREATE_COMPLETE」に変われば終了となる。

Appendix. クリーンアップ手順

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

このハンズオンで作成したVPCは「EC2 Web アプリケーションの自動デプロイメント(Wordpress)」、「EC2 Web アプリケーションの自動デプロイメント(静的Web)」でも使用されます。
これらハンズオンを完了した後にクリーンアップすることをお勧めします。

CloudFormationスタック削除手順

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