cm re growth-reinvent-app304-kaji
TRANSCRIPT
Ⓒ Classmethod, Inc.
re:Invent 2014「APP304 - AWS CloudFormation ベストプラクティス」 のレポート
1
DEVIO MTUP11-SAPPORO-002
梶 浩幸 AWSコンサルティング部2014年12月12日
Ⓒ Classmethod, Inc.
自己紹介梶 浩幸(かじ ひろゆき) AWSコンサルティング部 ソリューションアーキテクト
Twitter ID:
@cocacola917
2
ブログ http://dev.classmethod.jp/author/kaji-hiroyuki/
Ⓒ Classmethod, Inc.
自己紹介• ネットワーク屋出身 • 某ネットワーク機器メーカSE • 某セキュリティ系会社のシステム運用者 • クラスメソッド(今ココ)
• コカコーラが好きなITインフラエンジニア
• 好きなAWSサービス=VPC
3
“勉強会でのお話は初めてです。優しい目で見てください。”
Ⓒ Classmethod, Inc.
Agenda• CloudFormationとは • re:Invent2014 • APP304 CloudFormation ベストプラクティスレポート
5
CloudFormationとは
6
Ⓒ Classmethod, Inc.
CloudFormationとはEC2、RDS、ELBなとを使ったAWSサービスのシステム構築を、設定ファイル(テンプレート)を元に行えるサービスです。
7
Ⓒ Classmethod, Inc.
特徴JSONフォーマットのテキストファイル CloudFormationは無料で利用できる。 構築した各サービスで課金。
8
Ⓒ Classmethod, Inc.
何ができるのか?テンプレートを作成すると同じ構成を作れる。サンプルテンプレートもある。 開発環境と本番環境を同じ構成で構築。 DB(RDS)の接続先(エンドポイント)をサーバ(EC2)へ渡せます。
9
APP304 CloudFormation ベストプラクティスレポート
10
Ⓒ Classmethod, Inc.
まえおき• 40分の内容のため抜粋版。 • 英語苦手&なまりあって聞き取れず、理解不足あるかも。 • 解釈に誤りがあれば「こっそり」コメントください。
• 元の資料のリンク • AWS re:Invent2014【保存版】全セッションを網羅!非公式まとめ
• http://dev.classmethod.jp/cloud/aws/aws-reinvent2014/
11
Ⓒ Classmethod, Inc.
スタックをどう計画するのか?
12
Ⓒ Classmethod, Inc.
レイヤーや環境ごとに整理
13
Ⓒ Classmethod, Inc.
サービス指向アーキテクチャの適用
14
Ⓒ Classmethod, Inc.
サービス指向アーキテクチャの適用
15
Ⓒ Classmethod, Inc.
再利用性·専門化のためのネストされたスタック
16
Ⓒ Classmethod, Inc.
どのようにエラーの無いスタックの作成できるのか?
17
Ⓒ Classmethod, Inc.
テンプレートを検証しましょう
18
Ⓒ Classmethod, Inc.
検証(Validate)• awscliを事前にインストールしてください。 • 以下のスクリプトでテンプレートファイルを指定し実行
• チェックの結果、エラーなしの場合はParameter一覧が出力されます。
19
$cat check.sh #!/bin/sh FILE=$1 cat $FILE | xargs -0 aws cloudformation validate-template ̶template-body $./check.sh <ファイル名>
awscli(Python版)でCloudFormationテンプレートをValidateする http://dev.classmethod.jp/cloud/aws/awscli-cfn-validate/
Ⓒ Classmethod, Inc.
パラメータタイプが使える
20
Ⓒ Classmethod, Inc.
どうやってソフトウェアやデータをデプロイするのか?
21
Ⓒ Classmethod, Inc.
AWS::CloudFormation::Initを使う
22
Ⓒ Classmethod, Inc.
AWS::CloudFormation::Initを使う
23
Ⓒ Classmethod, Inc.
AWS::CloudFormation::Initを使う
24
Ⓒ Classmethod, Inc.
AWS::CloudFormation::Initを使う
25
Ⓒ Classmethod, Inc.
CloudWatch Logsを使ってデバック
26
Ⓒ Classmethod, Inc.
CloudWatch Logsを使ってデバック
27
Ⓒ Classmethod, Inc.
予想通りスタックが実行されていることを確認するには?
28
Ⓒ Classmethod, Inc.
IAMを使って保護
29
Ⓒ Classmethod, Inc.
CloudFormationでのみUpdateする
30
Ⓒ Classmethod, Inc.
IAMとタグでリソースを保護
31
Ⓒ Classmethod, Inc.
コメントを追記する
32
Ⓒ Classmethod, Inc.
安全にスタックするには?
33
Ⓒ Classmethod, Inc.
選べるアップデートスタイル
34
Ⓒ Classmethod, Inc.
スタックアップデートチェックリスト
35
何をアップデートするのかレビュー • 新旧テキストの差分 • 関連リソースへの更新を「Refs and Fn::GetAtts」
で予想
更新が実行されるかを確認します • リソースタイプと特性を更新するには、更新が「いいえ中断'、'いくつかの中断'、'交換'でするかどうかを決定
リソースの更新とロールバックを行うには十分なIAMの権限を確認します。
スタックは、そのテンプレートからドリフトしていないことを確認します。
Ⓒ Classmethod, Inc.
ガードレールとしてスタックポリシーを使用
36
Ⓒ Classmethod, Inc.
ダウンタイム0のためのローリングアップデートを使う
37
Ⓒ Classmethod, Inc.
CloudFormationをどう拡張するのか?
38
Ⓒ Classmethod, Inc.
カスタムリソースを拡張
39
Ⓒ Classmethod, Inc.
スタックを監査するにはどうするか?
40
Ⓒ Classmethod, Inc.
監査
41
Ⓒ Classmethod, Inc.
作成したスタックのコストを確認するには?
42
Ⓒ Classmethod, Inc.
AWS Cost Explorerでタグでフィルタ
43
Ⓒ Classmethod, Inc.
全体的なDevOpsのパイプラインは次のようになります。
44
Ⓒ Classmethod, Inc.
DevOpsパイプラインで
45
Ⓒ Classmethod, Inc.
まとめ1.CloudFormationテンプレートを作成する際、レイヤーやフェイズ毎に分割する。 2.ValidateやParameterをリストから選択し、エラー無く実行。 3.アップデート行う際は、チェックリストに基づいたレビュー、IAMやStackPolicyなどで保護して実行。
また、ローリングアップデートでのゼロダウンタイム等、知らない使い方がありました。さらに深堀していきたいと思います。
46
Ⓒ Classmethod, Inc.
#cmdevio
ご静聴ありがとうございました。 スライドは後日ブログで公開します。
47
DevIO MTUP11-SAPPORO-002