CM re:Growth 2014 SAPPRO re:Invent 2014「APP304 – AWS CloudFormation ベストプラクティス」のレポートについて話してきました #cmdevio
コカコーラが大好きな梶です。 2014/12/12に、弊社イベントCM re:Growth 2014 SAPPOROを実施し、そこでreinvent 2014のCloudformationのベストプラクティスのレポートをお話をしましたので、本日はそのご紹介をします。
概要
- CloudFormationとは
- re:Invent2014 APP304 CloudFormation ベストプラクティスレポート
APP304 CloudFormationベストプラクティスレポート
私は現地に行っておらず、Youtubeで見てSlideshareで内容を確認しました。 40分の内容だったのですが、お話しする持ち時間が20分のため、抜粋しています。 英語苦手&なまりがあって聞き取れず、理解不足があるかもしれません。 解釈に誤りがあったらコメントください。
ポイント
スタックをどう計画するのか?
レイヤーや環境ごとに整理する。この内容は一番印象的でした。 上から下まで構築可能ですしケースバイケースだと思ってますが、大きなシステムになってくると追加や削除が発生するので、どのようにするのかモヤモヤしてました。 あとサービス毎にテンプレート構成を適応するのも紹介されていました。
どのようにエラーの無いスタックの作成できるのか?
テンプレートの検証を行う。
説明が理解できなかったのですが、以下の内容と認識しました。 awscliを事前インストールして以下のスクリプトでテンプレートファイルを指定して検証してます。
$cat check.sh #!/bin/sh FILE=$1 cat $FILE | xargs -0 aws cloudformation validate-template —template-body $./check.sh <ファイル名>
参考元 awscli(Python版)でCloudFormationテンプレートをValidateする
パラメータタイプが使える
今まで、Parametersはテキスト手入力していたと思います。以下の項目がリスト選択を指定できるようになりました。面倒だと思っていた部分が少し解消されてきていると思います。 keypairは弊社既存ののCloudFormationテンプレートを修正し動作することが確認しました。 その他の部分は弊社テンプレートで適応してもリスト選択動作しましたが、ロールバックしました。さらに深堀した調査が必要と思ってます。
スライド上の図で隠れている部分はYoutubeで確認し以下となってました。
"Parameters": { "aVpcId": { "Type": "AWS::EC2::VPC::ID" }, "bSubnetIds": { "Type": "List<AWS::EC2::Subnet::Id>" }, "cSecurityGroups": { "Type": "List<AWS::EC2::SecurityGroup::Id>" }, "dKeyPair": { "Type": "AWS::EC2::KeyPair::KeyName" },
まとめ
- CloudFormationテンプレートを作成する際、レイヤーやフェイズ毎に分割する。
- ValidateやParameterをリストから選択し、エラー無く実行。
- アップデート行う際は、チェックリストに基づいたレビュー、IAMやStackPolicyなどで保護して実行。
また、ローリングアップデートでのゼロダウンタイム等、知らない使い方がありました。さらに深堀していきたいと思います。
おまけ(資料に記載しなかったところ)
CloudFormationを書くツール
私個人で調べた結果です。(担当者によって異なります。) 現在も、模索中です。
エディタ Eclipse + AWS Toolkit for Eclipse
経験したはまりどころ
配列(カッコ)にミスがあるとき
- Eclispeではエラー表示してくれて、「アウトライン」が変な配列になる。*慣れないとスルー
- Validateでエラー。*けど原因がわからない
- JSON EDITORでチェックするとわかるときもあります。
動作するけど、意図した構成にならないとき
ManagementConsoleから手で作成するとcfnで指定している項目がちかうことに気づいたりします。以下のブログも大変参考になりました。
【初心者向け】CloudFormationのテンプレート作成で困った時の解決法 https://dev.classmethod.jp/cloud/aws/cfn-mini-tips/
【AWS】CloudFormationの作成ノウハウをまとめた社内向け資料を公開してみる https://dev.classmethod.jp/cloud/aws/cloudformation-knowhow/
資料
[slideshare id=42637890&doc=cm-regrowth-reinvent-app304-kaji-141212053536-conversion-gate02]