#Cloud Formationとは
AWSリソース(EC2インスタンス、 RDS DBインスタンスなど)のモデル化およびセットアップに役立つサービス。テンプレートに設定を書けばその設定通りにCloudFormationがAWSリソースを作ってくれる。無料サービス。
#テンプレートってどうやって書くの?
JSONまたはyaml形式で次のような感じで書く。
JSON形式
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "A simple EC2 instance",
"Resources" : {
"MyEC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"ImageId" : "ami-0ff8a91507f77f867",
"InstanceType" : "t1.micro"
}
}
}
}
yaml形式
AWSTemplateFormatVersion: '2010-09-09'
Description: A simple EC2 instance
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-0ff8a91507f77f867
InstanceType: t1.micro
詳しく説明すると時間がかかりすぎるので他の記事にまかせます。
https://dev.classmethod.jp/articles/cloudformation-beginner01
その他の選択肢としてデザイナーツールを使って構築するというものがある。
視覚的でわかりやすく、JSONやyamlでの書き方がわからなくても使えるのが利点。
#CloudFormationを使用する利点
主に3つ利点がある。
AWSでのインフラ構築の手間が省ける
テンプレートを利用することで、それぞれのAWSリソースのコンソールに移動してあれやこれや設定することをしなくてよくなる。
慣れてくると時間も短縮されそう。
インフラの複製が簡単にできる
可用性(=ユーザーがサービスが使える時間の割合の大きさ)を高くしたい時、別のリージョンに同じインフラを構築したくなる。その時にテンプレートをコピーするだけで同じインフラが構築できる。
インフラの変更点を追いやすい
例えば、予想されていたよりもアクセスが多くてサーバーを強化したあとに問題が何か起こったとする。CloudFormationを使っていない場合は強化する前のインフラ構成を覚えておいて変更前後でどのような違いがあったかを確認する必要がある。しかし、CloudFormationを使っていれば、インフラの構成はテンプレートに残っているので現在との差分がわかりやすくなる。