AWS CloudFormationを知識0から作る(その1)

私がAWS CloudFormationを使いたいけど、どうすればいいのか?分からなかったので、全く知識ない状態からある程度の設定ができるまでをなるべく分かりやすく書いていきます。
AWS CloudFormationを使いたい!!」という人向けの記事なので、「AWS CloudFormation」って何?とか、何が便利なの?という説明は無いです。

 

ゴールをしては、AMIからEC2をある程度の設定を含め、作成すること。
以下のCloudFormationのテンプレートを書けるまでの知識を記載していきます。

VPC、サブネット、セキュリティグループ、ロールは既に作成済のものを指定
② EC2のAMI、インスタンスタイプ、EC2名はパラメータから指定

AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  EC2Name:
    Type: String
  ImageId:
    Type: AWS::EC2::Image::Id
  InstanceType:
    Description: WebServer EC2 instance type
    ConstraintDescription: Must be a valid EC2 instance type
    Type: String
    AllowedValues:
      - t3.medium
      - c5.large

Resources:
  CreateEC2Instance:
    Type: AWS::EC2::Instance
    DeletionPolicy: Retain
    Properties: 
      ImageId: !Ref ImageId
      InstanceType: !Ref InstanceType
      SubnetId: subnet-0bxxxxxxxxxxxxxxx
      SecurityGroupIds:
        - sg-0exxxxxxxxxxxxxxx
      KeyName: test-key
      IamInstanceProfile: !Ref MyInstanceProfile
      Tags:
        - Key: Name
          Value: !Ref EC2Name

  MyInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: "/"
      Roles:
      - "TEST-EC2Role"

②のパラメータから指定というのは、AWSのマネコンから指定できるということです。
以下のように状況によっていろいろ指定することでテンプレートを汎用的に利用することができます。

f:id:rikues2012:20220418100502p:plain

パラメータ設定

前提

AWS CloudFormationはJSON形式とYAML形式のどちらかを利用します。
YAML形式のみの記載方法を説明。

 

YAML形式の書き方

いろいろ仕様がありますが、まずは以下の2つだけ覚えれば何とかなります。

1、コロンの後に半角スペースを1つ入れる
  (正確には2つでも3つでも問題ないです)

    Type: String
    DeletionPolicy: Retain

2、ネストする2つの半角スペースを入れる
  (正確には1つ以上あれば問題ないです)

Resources:
  CreateEC2Instance:
    Type: AWS::EC2::Instance
    DeletionPolicy: Retain

以下、参考ページです。

情報量がそんなに多くないので、理解しやすかったです。

www.task-notes.com

 

 

ここまでの知識で以下のリンクからVPCを作ることができます。
CloudFormationのテンプレート6行でVPCができるので、「なんか自分でもCloudFormation使えそうだな~」という実感がわくのでかなりお勧めです。
少しインプットしたら、少しアウトプットして、その繰り返しで挫折せずにいろいろ出来ていくと思います。

dev.classmethod.jp

 

1回目の説明は以上になります。
私はここまでできた時点で、あるプロジェクトで「AWS CloudFormation」を利用して構築&運用することを心の中で決めました。