エンジニアはこわくない

好きなように書く

AWS CloudFormationを使用してみた実践記録


スポンサーリンク

f:id:tsujitaku50:20170121194543p:plain

AWS CloudFormationはAWS構成をソースコードで管理するためのAWS純正のサービスです。

似たようなサービスにTerraformというサービスがあります
これは純正ではありません。内部的にAWSAPIを叩いてる感じです。(多分ね)

Terraformも使用したことがあるのですが、それはまたの機会に。

AWS構成をソースコードで管理できるようになれば gitで差分管理できる上にチーム開発でも使用できます。

今回はAWS CloudFormationを試しに使用したので、それの記録です。

目次

実践メモ書き

公式ドキュメント

まずは何より公式ドキュメントですね。

aws.amazon.com

事前準備

何かをインストールしたりとか、秘密鍵の設定をしたりetc・・・

これらの作業は特に必要はありません!

感激です。

この手軽さも魅力も1つかもしれません。

JSON or YAML

AWS CloudFormationはJSON形式かYAML形式で書きます。

元々はJSON形式だったのですが、アップデートでYAML形式でも書けるようになったようです。

AWS CloudFormation の更新 – YAML、クロススタック参照、簡略化された置換 | Amazon Web Services ブログ

そのためインターネット上ではJSON形式で書いてることが多いような気がします。

今回はJSON形式で行います。

テンプレートの分析をしよう

AWSが丁寧にテンプレートを用意してくれています。

ここを見ればかなりイメージしやすいのではないかと思います。

以下の作業はこのテンプレートを確認したと仮定して話を進めます。

docs.aws.amazon.com

実際にEC2をたてる

試しにAWS CloudFormationでEC2を立ててみましょう。

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "test",
    "Resources": {
        "MyInstance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "ImageId": "ami-9f0c67f8",
                "InstanceType" : "t2.micro"
            }
        }
    }
}

上記内容をJSONファイルにします。

そしてAWSのマネージドコンソール画面にアップロードするだけでEC2インスタンスが立ち上がります
(確認済み)

AWSTemplateFormatVersionというのはバージョンのことで2017年1月現在は2010-09-09しかバージョンが存在しません。 それ以外を記入するとエラーになります。

JSONファイルのアップロード方法

まずAWSにログインします。

そして画面左上の「サービス」を選択すると検索ボックスが表示されます。

そこに「CloudFormation」を入力するとCloudFormationページにいけます。

画面中央の矢印指している「Create Stack」ボタンを押します。 f:id:tsujitaku50:20170121213656j:plain

先程作成したJSONファイルをS3にアップロードします。 f:id:tsujitaku50:20170121213950j:plain

次に名前を入力します。自分が分かる名前なら何でも構いません。 f:id:tsujitaku50:20170121214238j:plain

このあとは特に特別な入力はしなくて結構です。

画面にしたがって、「NEXT」ボタンを押して最後に「CREATE」ボタンを押しましょう。

最後までいくとEC2インスタンスが立ち上がっていると思います。

これだけで最低限ですがEC2インスタンスは出来上がります。

まとめ

実際に使ってみた感想は

  • 処理に失敗した場合ロールバックしてくれる。神。(Terraformはロールバックしてくれない。めんどくさい。)

  • 処理の順番をグチャグチャに書いてもAWSがちゃんと解釈して順番どおり実行してくれる

  • 特別なインストールなども設定もなくJOSNファイルをアップロードするだけで実行できるので手軽

上記3つが特に良い感じでした。

今後LambdaなどもAWS CloudFormationで作成していく予定なのでそちらも分かり次第書いていきたいと思います!

追記

Lambda環境をAWS CloudFormationで構築サンプルコードを書きました。 tsujitaku50.hatenablog.com