私が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のマネコンから指定できるということです。
以下のように状況によっていろいろ指定することでテンプレートを汎用的に利用することができます。
前提
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
以下、参考ページです。
情報量がそんなに多くないので、理解しやすかったです。
ここまでの知識で以下のリンクからVPCを作ることができます。
CloudFormationのテンプレート6行でVPCができるので、「なんか自分でもCloudFormation使えそうだな~」という実感がわくのでかなりお勧めです。
少しインプットしたら、少しアウトプットして、その繰り返しで挫折せずにいろいろ出来ていくと思います。
1回目の説明は以上になります。
私はここまでできた時点で、あるプロジェクトで「AWS CloudFormation」を利用して構築&運用することを心の中で決めました。