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

CloudFormation_Management_Console

確かにできていますね。

VPC

VPC_Management_Console

指定した値が設定されています。

まとめ

一度作成してしまえば何度でも環境を再現できるCloudFormation。
非常に便利ですね。引き続きCloudFormationの各機能をお伝えしていきこうとおもいます。