俺のアウトプット

調べたこと、試したことを書きます

CloudFormationテンプレート最初の一歩

AWS CloudFormation概要

AWS CloudFormationは、テンプレートを元にAWSリソースの構築を自動化出来る管理サービスです。
一度テンプレートを作成すれば、同じ構成を何度も構築できます。

テンプレート

テンプレートはJSONまたはYAMLフォーマットで記述します。
テキスト形式なので、Git等のリポジトリでバージョン管理をすることも容易です。
フォーマットに制約がなければ、コメントを書けて、短縮形の構文を使える、可読性の高いYAML形式をお勧めします。

テンプレートは一から記述して作成することも出来ますが、AWSで公開されているサンプルを利用、自分の既存構成から作成、GUIを使ったりして、そこから修正することも出来ます。

スタック

テンプレートから作成したリソースの集合をスタックと呼びます。 スタック単位でリソースを管理するため、スタックを削除すると、関連するリソースを破棄できます。

テンプレートの要素

テンプレートはいくつかのセクションから成り立ちます。

AWSTemplateFormatVersion: 任意
Description: 任意
Metadata: 任意
Parameters: 任意
Mappings: 任意
Configions: 任意
Transform: 任意
Resources: 必須
Output: 任意

この中で Resources セクションは必須セクションになります。

まずはシンプルなテンプレートを作成します。(実用性はありません) 以下をテキストエディタで作成して保存します。(create_vpc.template.yaml)

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  myVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
Outputs:
  vpcId:
    Description: The ID of the VPC
    Value: !Ref myVPC

AWSTemplateFormatVersion

テンプレートの形式バージョンを指定します。現在は '2010-09-09' のみです。
任意ですが、短いので常に追加しましょう。

Resources

スタックに含めるEC2インスタンスやS3バケットなどのリソースを記述します。

Resources:
  <論理ID>:
    Type: <リソースタイプ>
    Properties:
      <プロパティ...>

リソースタイプ AWS::EC2::VPC でVPCを作成します。 プロパティには必須項目のCIDRブロックを指定します。

Outputs

スタック作成後に出力したい項目を記述します。

Outputs:
  <論理ID>:
    Description: <説明>
    Value: <返す値>

Refは組み込み関数で、!Refはその短縮形です。
指定したパラメーターまたはリソースの値を返します。

リソースの論理名を指定すると、それはそのリソースを参照するために通常使用できる値を返します (物理 ID)。

今回は、作成されたVPCの物理IDを返します。

スタックの作成

スタックはマネージメントコンソール、API、またはAWS-CLIを使用して作成できます。 今回はマネージメントコンソールから先程作成したテンプレート(create_vpc.template.yaml)を使用してスタックを作成します。 作成するリソースはVPCだけなので料金は発生しません。

サービスメニューから [管理ツール]-[CloudFormation] を選択。 [スタックの作成] を選択します。

f:id:kitsugi:20180713063135p:plain

テンプレートの選択

[テンプレートを Amazon S3 にアップロード] を選択して作成したテンプレートファイルを選択します。
[次へ]ボタンを押下します。

f:id:kitsugi:20180713063821p:plain

詳細の指定

スタックの名前を入力して、[次へ]ボタンを押下します。

f:id:kitsugi:20180713063830p:plain

オプション

今回は何もせず、[次へ]ボタンを押下します。

確認

[作成]ボタンを押下します。

メイン画面

スタックを作成します。
状況が CREATE_IN_PROGRESS から CREATE_COMPLETE になれば完了です。

f:id:kitsugi:20180713063954p:plain

VPCが上限値(デフォルト5個)に達している場合は失敗(CREATE_FAILED)します。
その場合はロールバック処理で作成途中のリソースは全て削除されます。

f:id:kitsugi:20180713064148p:plain

出力タブを選択すると、テンプレートの Outputs セクションで作成したキーが表示されています。

f:id:kitsugi:20180713064201p:plain

サービスメニューから [ネットワーキング & コンテンツ配信]-[VPC] を選択。
VPCが作成出来ているか確認してください。

スタックの削除

作成したスタックを削除します。
VPCが消えていることを確認します。

f:id:kitsugi:20180713064215p:plain

参考