【第26回】VPC/Subnet/RouteTable/InternetGateway構築自動化テンプレート一覧はこちら本連載では、以下のイメージの構成にあるAWSリソース基盤自動化環境の構築を実践しています。本連載で構築していく基盤自動化環境のイメージ前回は、VPCおよびパブリック、プライベートサブネット、ルートテーブル、インターネットゲートウェイを作成するCloudFormationテンプレートを作成しました。今回は、作成した各パブリック/プライベートサブネットをFrontend/Backendサブネットに位置付け、各AWSリソースへ設定するセキュリティグループ、FrontendサブネットにアタッチするNATGatewayを構築するテンプレートを実装します。セキュリティグループを作成するスタック構成は基本AWS無料枠で構成されるサービスですが、NATGatewayはスタック構築後に料金が発生するので注意が必要です。いえ、NATGatewayはECSを実行する際に必要になる(NATGatewayがないと、外からコンテナイメージを取得できずに起動が失敗する)ので、無駄な費用が発生しないよう、NATGatewayの構築は別のスタックに切り出しておきましょう。実際のソースコードはGitHub上にコミットしています。以降のソースコードでは本質的でない記述を一部省略しているので、実行コードを作成する場合は、必要に応じて適宜GitHub上のソースコードも参照してください。セキュリティグループスタック構築テンプレート筆者が執筆する本連載および連載「クラウドネイティブアプリケーションの基本」では、これまで、以下のようなリソースに対するセキュリティグループを作成してきました。上記のセキュリティグループをCloudFormationで構築する場合、リソースタイプが「AWS::EC2::SecurityGroup」となるセキュリティグループ自体の定義と、接続可能な条件を設定する「AWS::EC2::SecurityGroupIngress(インバウンド)」、もしくは「AWS::EC2::SecurityGroupEgress(アウトバウンド接続)」が必要になります。プロパティとして設定可能な属性は各リンク先の通りですが、上記の表のセキュリティグループを作成する「sample-sg-cfn.yml」は以下の通りです。omitセキュリティグループのテンプレートの記述の基本となるポイントは下表の通りです。セキュリティグループを使用するVPCのIDを設定します。インバウンド接続ルールをどのセキュリティグループに当てるか定義します。BackendServiceサブネットに配置するALBのセキュリティグループを定義します。送信元のCIDRを設定します。Frontendサブネットに配置するECSクラスタのセキュリティグループを定義します。Iで定義したセキュリティグループに割り当てるインバウンド接続ルールを定義しま。送信元をFrontendサブネットに配置したALBに設定するため、SourceSecurityGroupIdにFrontendALBのセキュリティグループAを設定します。Backendサブネットに配置するECSクラスタのセキュリティグループを定義します。Pで定義したセキュリティグループに割り当てるインバウンド接続ルールを定義します。ElastiCacheに設定するセキュリティグループを定義します。CodeBuildに設定するセキュリティグループを定義します。アウトバウンド接続はデフォルトで全ての通信が許可されるため、SecurityGroupEgressの設定は必要ありません作成したテンプレートに対して、以下のようにスタック名とテンプレートパスを変更してヘルパースクリプトを実行します(パラメータはデフォルト値を利用するので省略します)。CAPABILITY_IAM実行が正常に終了すると、セキュリティグループが作成されます。セキュリティグループが作成されるNATGatewayスタック構築テンプレート続いて、FrontendサブネットにNATGatewayを配置するCloudFormationテンプレートを作成します。NATGatewayは、連載「AWSで作るクラウドネイティブアプリケーションの基本」の第4回でVPC構築をする際に作成したものですが、時間単位で費用が発生するのでNATGatwayだけ切り出し、いつでも配置から外せるようにしておきましょう。テンプレートではNATGatewayのリソース定義に加えて、ElasticIPアドレスやメインルートテーブル、パブリックサブネットのアタッチ定義なども必要です。omitNatGatewayのテンプレートの記述の基本となるポイントは、下表の通りです。NatGatewayに割り当てるElasticIPアドレスを定義します。設定するプロパティは「AWS::EC2::EIP」を参照してください。NatGatewayリソースを定義します。メインとして設定するルートテーブルを定義します。メインとして設定するルートを定義します。Eで設定したルートテーブルのプライベートサブネットへの関連付けを定義します。設定するプロパティは「AWS::EC2::SubnetRouteTableAssociation」を参照してください作成したテンプレートに対して、ヘルパースクリプトを以下のように、スタック名とテンプレートパスを変更して実行します。CAPABILITY_IAM実行が正常に終了すると、NATGatewayが作成/アタッチされます。NATGatewayが作成/アタッチされる以上、今回はセキュリティグループとNATGatewayをCloudFormationテンプレートで構築しました。次回は、アプリケーションロードバランサーを構築するスタックテンプレートを作成します。金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。Professional等の資格を持ち、アプリケーション基盤・クラウドなどさまざまな開発プロジェクト支援にも携わる。Ambassadors選出。本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。AWSで機械学習を始めよう本連載では、「機械学習を取り入れたいが、担い手がおらず導入に踏み切れない」「機械学習の知識はある程度あるが、実装手段までは分からない」といった悩みを持つ読者が、パブリッククラウドとしてシェアの高いAWSが提供するサービスを使って、ビジネスに機械学習を取り入れていく方法を考えていきます。人気記事をお届けしますダウンロードBOXに入れる記事をダウンロードBOXに追加します。よろしいですか?ブックマーク記事をブックマークに追加します。Corporation。