CloudFormationの用途として、一時的に利用する開発環境や検証環境、バックアップ環境の起動/停止を一度にまとめて行うというものがあると思います。
(この他の用途については未確認ですが。)
そこで、最近になってこのような要件が出てきたので、しっかりと一から試すことにしました。
(つまり、HelloCloudFormationということです。)
下記は一番簡単な、AMIからEC2を起動するHelloCloudFormationのテンプレートになります。
(シンプルなテンプレートなので、内容については直感的に理解できると思います。)
{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "Create an Amazon EC2 instance running the SUZ-LAB CentOS AMI.", "Parameters" : { "KeyName" : { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", "Type" : "String" } }, "Mappings" : { "RegionMap" : { "ap-northeast-1" : { "AMI" : "ami-de9126df" } } }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]} } } }, "Outputs" : { "InstanceId" : { "Description" : "InstanceId of the newly created EC2 instance", "Value" : { "Ref" : "Ec2Instance" } } } }
それでは、上記のテンプレートを実際にAWS Management Consoleから利用してみます。
はじめに、上記のテンプレートを下記のようにS3に配置します。
https://s3-ap-northeast-1.amazonaws.com/www.suz-lab.com/formation/HelloCloudFormation.template
次に、下記のようにProvide a Template URLを選択し、テンプレートのURLを入力します。
そして、パラメータを入力します。
ここで入力するパラメータは上記のテンプレートのParametersで定義されたもので、任意に指定することが可能です。
最後に、情報の確認をして問題がなければ、構築を開始します。
起動後、Outputsタグを確認すると、下記のようにテンプレートのOutputsで定義した情報が出力されていることが確認できます。