CloudFormation入門-ちいさな構成をつくって肩慣らし-
ご機嫌いかがでしょうか、豊崎です。
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の各機能をお伝えしていきこうとおもいます。