subtitle

RaiseTechの各種コースをはじめとしたイロイロな学習の記録

CloudFormationでEC2のテンプレートを作成する

CloudFormationでVPCのテンプレートを作成したので、その続きでEC2まで作成できるようにテンプレートを更新する。

(EC2は、AWS環境構築2:EC2インスタンスの作成で作成したものを再現する。)


VPCの時に作成したテンプレートにそのまま追記するカタチで、この記事では重複を避けるためにも、EC2関連の部分のみ記載する。


作りたいEC2の概要

  • AMI:Amazon Linux 2 AMI (ami-0992fc94ca0f1415a)
  • インスタンスタイプ:t2.micro
  • VPN・サブネット・セキュリティグループ:前回作ったテンプレートのものを関連付ける


AMIは、以前にマネジメントコンソールで作成した時にAmazon Linux 2 AMIを選択しているが、そこにAMI-IDが記載されている。



ここからテンプレートの作成

Parametersに、SSHのキーペアとセキュリティグループに設定するSSH通信用のIPアドレスを設定しておく。

下記のように設定しておくと、CloudFormationでStackを作成するときに、パラメータを選択できるので、設定ファイル内にキーペアとIPアドレスの情報を記載する必要がない。

Parameters:
  KeyName:
    Type: AWS::EC2::KeyPair::KeyName
    Description: EC2 Key Pair for SSH
  MyIP: 
    Type: String
    Description: IP address


パラメータに設定したので、下記画像のようにStack作成時に別途設定できるようになる。



EC2インスタンス作成のための記述。

AMI、インスタンスタイプ、キーペアを順に設定していく。

AssociatePublicIpAddressは、パブリック IPv4 アドレスの自動割り当てをONにする設定で、これを記載しておかないとEC2インスタンスに対してパブリックIPが付与されないので注意。(以前のEC2作成時に失敗している。)

あとはセキュリティグループとサブネットを設定すればOK。

  CfInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0992fc94ca0f1415a
      InstanceType: t2.micro
      KeyName: !Ref KeyName
      NetworkInterfaces:
        - AssociatePublicIpAddress: "true"
          DeviceIndex: "0"
          GroupSet: 
            - !Ref CfsecGroup
          SubnetId: !Ref CfSubnet16
      Tags:
        - Key: Name
          Value: cf_Instance_02


CloudFormationでスタックを作成し、完成したら、SSHでEC2にアクセスしてみる。

上手くできた。