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にアクセスしてみる。
上手くできた。