見出し画像

AWSのCloudFormationでVPCを構築する

こんにちは!さっしです!

今回はタイトルにある通り、CloudFormationを使ってVPCを作成する方法をご紹介します。

普段何気なく作成しているVPCも、本記事通りに操作していただければ、問題なく作成でき、CloudFormationの感覚を掴むのにちょうど良いのではないかと思います。

■完成図

画像1

■やりたいこと

・CloudFormationを使ってVPCを作成したい
・そのVPCの中にサブネットを作成したい
・そのVPCのセキュリティグループを作成したい
・セキュリティグループのインバウンドで22ポートを許可したい

■事前準備

・「cloudformation」ディレクトリを作成し、そのディレクトリに「test.yml」ファイルを作成する
・VSCodeのプラグインを使って作成するため、以下に記載されている設定を済ませておく
VSCodeのプラグインでAWSのCloudFormationの構文を簡単に記述する方法

■やること

1.テンプレートの雛形を作成する
2.ResourceセクションにVPCを作成する内容を記述する
3.Resourceセクションにサブネットを作成する内容を記述する
4.Resourceセクションにセキュリティグループを作成する内容を記述する
5.テンプレート全体を確認する
6.CloudFormationでデプロイを行う

■1.テンプレートの雛形を作成する

・test.ymlのファイルを開く

・「start」と入力した後に「 tabキー」を1回押す

画像2

・テンプレートの雛形が出力されたことを確認する

画像3

・不要なセクションを削除する
※今回は使用しないため

画像4

■2.ResourceセクションにVPCを作成する内容を記述する

・「Resources」セクションで「vpc」と入力した後に「 tabキー」を1回押す

画像5

・「Resources」セクションの下のエリアに以下の内容を入力し保存する
Logical ID:VpcForCf(任意)
CidrBlock:10.0.8.0/21
Tags
Key:Name(任意)
Value:VpcForCf(任意)

画像6

■3.Resourceセクションにサブネットを作成する内容を記述する

・「Resources」セクションで「sub」と入力した後に「 tabキー」を1回押す

画像7

・「Resources」セクションの下のエリアに以下の内容を入力し保存する
Logical ID:SubnetForCf(任意)
AvailabilityZone:"ap-northeast-1a"
VpcId:!Ref VpcForCf(※Ref関数とVPCのLogical IDを設定)
CidrBlock:10.0.8.0/24
Tags
Key:Name(任意)
Value:SubnetForCf(任意)

画像8

○Tips
組み込み関数「!Ref」
同一テンプレート内で作成されたパラメータまたはリソースの値を返す

■4.Resourceセクションにセキュリティグループを作成する内容を記述する

・「Resources」セクションで「sec」と入力した後に「 tabキー」を1回押す

画像9

・「Resources」セクションの下のエリアに以下の内容を入力し保存する
Logical ID:SecurityForCf(任意)
GroupName:SecurityForCf(任意)
GroupDescription:SecurityForCf(任意)
VpcId:!Ref VpcForCf(※Ref関数とVPCのLogical IDを設定)
SecurityGroupIngress
IpProtocol:tcp
FromPort:22
ToPort:22
CidrIp:0.0.0.0/0
SecurityGroupEgress:削除
Tags
Key:Name(任意)
Value:SecurityForCf(任意)

画像10

■5.テンプレート全体を確認する

AWSTemplateFormatVersion: 2010-09-09
Resources: 
 VpcForCf:
   Type: AWS::EC2::VPC
   Properties:
     CidrBlock: 10.0.8.0/21
     EnableDnsSupport: true
     Tags:
       - Key: Name
         Value: VpcForCf
 SubnetForCf:
   Type: AWS::EC2::Subnet
   Properties:
     AvailabilityZone: "ap-northeast-1a"
     VpcId: !Ref VpcForCf
     CidrBlock: 10.0.8.0/24
     Tags:
       - Key: Name
         Value: SubnetForCf
 SecurityForCf:
   Type: AWS::EC2::SecurityGroup
   Properties:
     GroupName: SecurityForCf
     GroupDescription: SecurityForCf
     VpcId: !Ref VpcForCf
     SecurityGroupIngress:
       - IpProtocol: tcp
         FromPort: 22
         ToPort: 22
         CidrIp: 0.0.0.0/0
     Tags:
       - Key: Name
         Value: SecurityForCf
○Tips
スペースやインデントやコロンには特に注意する
CloudFormationでファイルを選択した際にプロビジョン時に「Template parameters must be a map」といったエラーの原因になりやすい

■6.CloudFormationでデプロイを行う

サービス:CloudFormation
・「スタックの作成」ボタンをクリックする

画像11

・以下の内容を入力し「次へ」をクリックする
テンプレートの種類:テンプレートの準備完了
テンプレートソース:テンプレートファイルのアップロード
テンプレートファイルのアップロード:test.yml(先ほど作成したymlファイル)

画像12

・以下の内容を入力し「次へ」をクリックする
スタックの名前:Network(任意)

画像13

・以下の内容を入力し「次へ」をクリックする
タグ:Name, cf-network(任意)

画像14

・確認画面が表示されるので「スタックの作成」ボタンをクリックする

・「CREATE_COMPLETE」の文字が表示されれば成功

画像15


設定は以上になります。

AWSってほんと楽しいですね!

この記事が気に入ったらサポートをしてみませんか?