この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ご機嫌いかがでしょうか、豊崎です。
CloudFormationはAWSの環境を作る上でとても便利です。 一度書いてしまえば、何度でも同じ環境を用意することができます。 とっつきにくくありません。まずは触って見ましょう。 それでは公式ドキュメントで学んだことをすこしずつアウトプットしていきたいと思います。
CloudFormationとは何か?
Q: AWS CloudFormation とは何ですか? AWS CloudFormation は、開発や本運用に必要な、互いに関連する AWS リソースのコレクションを作成しておき、そのリソースを適切な順序でプロビジョニングするためのサービスです。
参考URL:http://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html
どうやって使うの?
「CloudFormationテンプレート」を使って「Stack」をつくります。
CloudFormationテンプレート
json形式もしくはyaml形式のテキストファイルに構築したいAWSリソース(VPCやEC2、RDSなど)を書き起こしたもの。 ここではyaml形式で記載したテンプレートで説明をしていきます。
どうやってテンプレートを書けば良いか?
書き始める前に、まずはテンプレートの全体図を見ていきましょう。 以下がCloudFormationの要素となります。
---
AWSTemplateFormatVersion: "version date" #必須:2010−09−09で固定
Description: #任意:テンプレートの説明
String
Metadata: #任意:テンプレートに関する追加情報
template metadata
Parameters: #任意:テンプレートに渡すことができる値
set of parameters
Mappings: #任意:条件によるキーと値のマッピング
set of mappings
Conditions: #任意:条件の定義
set of conditions
Transform: #任意:AWS Serverless Application Modelのバージョンを指定
set of transforms
Resources: #必須:スタックで構築するリソースを指定
set of resources
Outputs: #任意:スタックのプロパティから返される値の表示
set of outputs
構成としてはそれほど多くありません。 さらに、そのほとんどが省略できます。 利用した方が柔軟性は高まりますが、まずは肩慣らしとしてVPCだけを作成していきましょう。
CloudFormationテンプレートを書く
###
AWSTemplateFormatVersion: "2010-09-09"
Resources:
###Create VPC
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: "true"
EnableDnsHostnames: "true"
InstanceTenancy: default
Tags:
- Key: Name
Value: MyVPC
cloudformation.yml として保存しておきましょう。
AWSTemplateFormatVersion
2010−09−09を指定しましょう。 現時点では上記のみが有効なversionです。
Resource
ここに各リソースを書いていきます。 今回はVPCだけ書いています。 作成したいAWSリソースごとにリソースタイプ、リソースタイプに適したプロパティを記述していきます。
参考URL: AWS::EC2::VPC
Stackを作りましょう=(構築をしましょう)
ここではAWSCLIから作成をしていきます。
$ aws cloudformation create-stack --stack-name cm-vpc --template-body file://cloudformation.yml
{
"StackId": "arn:aws:cloudformation:ap-northeast-1:XXXXXXXXXXXX:stack/cm-vpc/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX"
}
せっかくなので、AWSマネジメントコンソールからも見ていきましょう。
CloudFormation
確かにできていますね。
VPC
指定した値が設定されています。
まとめ
一度作成してしまえば何度でも環境を再現できるCloudFormation。 非常に便利ですね。引き続きCloudFormationの各機能をお伝えしていきこうとおもいます。