3
Help us understand the problem. What are the problem?

posted at

updated at

AWS_Cloudformationで環境構築してみた①

「CloudFormationは習うより慣れよ」ということで、環境構築にチャレンジ。
構成はシンプルに以下のようなものを作りたい。
CloudFormation構成図.png
CloudFormationのテンプレートは以下の3つに分けて作る。
①Networkレイヤ・・・VPC/Subnet/ルートテーブル/InternetGatewayなど
②Securityレイヤ・・・SecurityGroup、IAMなど
③Applicationレイヤ・・・EC2、RDSなど


今回は土台となるNetworkレイヤ(VPC/Subnet/ルートテーブル/InternetGateway)から作成する。
マネージメントコンソールから[CloudFormation]を選択し、[スタックの作成]をクリックする。
[テンプレートファイルのアップロード]を選んで、ymlをアップロードする。
1.テンプレートの指定.PNG

アップロードするymlは以下。
なお、!Ref関数は同じyml内でしか参照できない点が注意。

AWSTemplateFormatVersion: 2010-09-09
Description: Create Network
Resources: 
#VPC作成
 VPC2:
   Type: AWS::EC2::VPC
   Properties:
     CidrBlock: 172.17.0.0/20
     EnableDnsSupport: true
     EnableDnsHostnames: true
     InstanceTenancy: "default"
     Tags:
       - Key: Name
         Value: VPC_fromCF

#インターネットゲートウェイ作成
 InternetGW2:
   Type: AWS::EC2::InternetGateway
   Properties:
     Tags:
       - Key: Name
         Value: IGW_fromCF

#インターネットゲートウェイをVPCにアタッチ        
 IGWAttachment:
   Type: AWS::EC2::VPCGatewayAttachment
   Properties:
     VpcId: !Ref VPC2
     InternetGatewayId: !Ref InternetGW2

#パブリックサブネットを定義
 PubSub:
  Type: AWS::EC2::Subnet
  Properties:
   VpcId: !Ref VPC2
   CidrBlock: 172.17.1.0/24
   AvailabilityZone: ap-northeast-1a
   Tags:
    - Key: Name
      Value: PublicSubnet_fromCF

#ルートテーブルを定義
 PubSubRoute:
  Type: AWS::EC2::RouteTable
  Properties :
   VpcId: !Ref VPC2
   Tags: 
     - Key: Name
       Value: RouteTablePublicFromCF 

#ルートテーブルとサブネットを関連付け
 PubSubRouteTableAssociation:
  Type: AWS::EC2::SubnetRouteTableAssociation
  Properties:
    RouteTableId: !Ref PubSubRoute
    SubnetId: !Ref PubSub

#ルートテーブル(IGW向け)
 PubSubToIGW:
  Type: AWS::EC2::Route
  Properties: 
   RouteTableId: !Ref PubSubRoute
   DestinationCidrBlock: 0.0.0.0/0
   GatewayId: !Ref InternetGW2

スタックの作成画面に出ていた[デザイナーで表示]という補助機能があるのだが、それがまじで神機能で
アップロードしたテンプレートがどんな構成になるかを絵で描いてくれる。
これでイメージと違うかもチェックできるし、構文が違うのも発見できる。
1.5デザイナーの表示.PNG

次にスタック名を決めて、あとのオプションは変更せずに次へと進んでスタックを作成する。
スタックとはCloudFormationで作成される塊みたいなもん。
2.スタックの詳細.PNG
作成後にイベントタブで更新連打をすれば、作成される過程が見れる。
とりあえず土台の作成は成功した。
3.イベントログ.PNG
次回は、セキュリティグループとEC2の作成をCloudFormationでやってみたいと思う。
Import関数やOutputパラメータが必要になる想定だ。

つづく
https://qiita.com/shinichi_yoshioka/items/b027f71a9998a87c46b8


この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?