cm re growth-reinvent-app304-kaji

47
Ⓒ Classmethod, Inc. re:Invent 2014「APP304 - AWS CloudFormation ベストプラクティス」 のレポート 1 DEVIO MTUP11-SAPPORO-002 梶 浩幸 AWSコンサルティング部 2014年12月12日

Upload: hiroyuki-kaji

Post on 13-Aug-2015

877 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

re:Invent 2014「APP304 - AWS CloudFormation ベストプラクティス」 のレポート

1

DEVIO MTUP11-SAPPORO-002

梶 浩幸 AWSコンサルティング部2014年12月12日

Page 2: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

自己紹介梶 浩幸(かじ ひろゆき) AWSコンサルティング部 ソリューションアーキテクト

Twitter ID:

@cocacola917

2

ブログ http://dev.classmethod.jp/author/kaji-hiroyuki/

Page 3: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

自己紹介• ネットワーク屋出身 • 某ネットワーク機器メーカSE • 某セキュリティ系会社のシステム運用者 • クラスメソッド(今ココ)

• コカコーラが好きなITインフラエンジニア

• 好きなAWSサービス=VPC

3

Page 4: Cm re growth-reinvent-app304-kaji

“勉強会でのお話は初めてです。優しい目で見てください。”

Page 5: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

Agenda• CloudFormationとは • re:Invent2014 • APP304 CloudFormation ベストプラクティスレポート

5

Page 6: Cm re growth-reinvent-app304-kaji

CloudFormationとは

6

Page 7: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

CloudFormationとはEC2、RDS、ELBなとを使ったAWSサービスのシステム構築を、設定ファイル(テンプレート)を元に行えるサービスです。

7

Page 8: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

特徴JSONフォーマットのテキストファイル CloudFormationは無料で利用できる。 構築した各サービスで課金。

8

Page 9: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

何ができるのか?テンプレートを作成すると同じ構成を作れる。サンプルテンプレートもある。 開発環境と本番環境を同じ構成で構築。 DB(RDS)の接続先(エンドポイント)をサーバ(EC2)へ渡せます。

9

Page 10: Cm re growth-reinvent-app304-kaji

APP304 CloudFormation ベストプラクティスレポート

10

Page 11: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

まえおき• 40分の内容のため抜粋版。 • 英語苦手&なまりあって聞き取れず、理解不足あるかも。 • 解釈に誤りがあれば「こっそり」コメントください。

• 元の資料のリンク • AWS re:Invent2014【保存版】全セッションを網羅!非公式まとめ

• http://dev.classmethod.jp/cloud/aws/aws-reinvent2014/

11

Page 12: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

スタックをどう計画するのか?

12

Page 13: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

レイヤーや環境ごとに整理

13

Page 14: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

サービス指向アーキテクチャの適用

14

Page 15: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

サービス指向アーキテクチャの適用

15

Page 16: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

再利用性·専門化のためのネストされたスタック

16

Page 17: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

どのようにエラーの無いスタックの作成できるのか?

17

Page 18: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

テンプレートを検証しましょう

18

Page 19: Cm re growth-reinvent-app304-kaji

Ⓒ 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/

Page 20: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

パラメータタイプが使える

20

Page 21: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

どうやってソフトウェアやデータをデプロイするのか?

21

Page 22: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

AWS::CloudFormation::Initを使う

22

Page 23: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

AWS::CloudFormation::Initを使う

23

Page 24: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

AWS::CloudFormation::Initを使う

24

Page 25: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

AWS::CloudFormation::Initを使う

25

Page 26: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

CloudWatch Logsを使ってデバック

26

Page 27: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

CloudWatch Logsを使ってデバック

27

Page 28: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

予想通りスタックが実行されていることを確認するには?

28

Page 29: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

IAMを使って保護

29

Page 30: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

CloudFormationでのみUpdateする

30

Page 31: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

IAMとタグでリソースを保護

31

Page 32: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

コメントを追記する

32

Page 33: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

安全にスタックするには?

33

Page 34: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

選べるアップデートスタイル

34

Page 35: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

スタックアップデートチェックリスト

35

何をアップデートするのかレビュー • 新旧テキストの差分 • 関連リソースへの更新を「Refs and Fn::GetAtts」

で予想

更新が実行されるかを確認します • リソースタイプと特性を更新するには、更新が「いいえ中断'、'いくつかの中断'、'交換'でするかどうかを決定

リソースの更新とロールバックを行うには十分なIAMの権限を確認します。

スタックは、そのテンプレートからドリフトしていないことを確認します。

Page 36: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

ガードレールとしてスタックポリシーを使用

36

Page 37: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

ダウンタイム0のためのローリングアップデートを使う

37

Page 38: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

CloudFormationをどう拡張するのか?

38

Page 39: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

カスタムリソースを拡張

39

Page 40: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

スタックを監査するにはどうするか?

40

Page 41: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

監査

41

Page 42: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

作成したスタックのコストを確認するには?

42

Page 43: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

AWS Cost Explorerでタグでフィルタ

43

Page 44: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

全体的なDevOpsのパイプラインは次のようになります。

44

Page 45: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

DevOpsパイプラインで

45

Page 46: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

まとめ1.CloudFormationテンプレートを作成する際、レイヤーやフェイズ毎に分割する。 2.ValidateやParameterをリストから選択し、エラー無く実行。 3.アップデート行う際は、チェックリストに基づいたレビュー、IAMやStackPolicyなどで保護して実行。

また、ローリングアップデートでのゼロダウンタイム等、知らない使い方がありました。さらに深堀していきたいと思います。

46

Page 47: Cm re growth-reinvent-app304-kaji

Ⓒ Classmethod, Inc.

#cmdevio

ご静聴ありがとうございました。 スライドは後日ブログで公開します。

47

DevIO MTUP11-SAPPORO-002