ハンズオン日記Vol.2:AWS CloudFormationで Web システムを構築する編

はじめに

これはAWSの気になったハンズオンをやってみた系の記事である

ハンズオンの探し方がわからない方はこちらを参考にすると良いかも

dev.classmethod.jp

本日のお品書き

AWS CloudFormationのハンズオンをやります

pages.awscloud.com

必要な時間

1時間30分くらい

アジェンダ
# Session
1

ハンズオンで構築する構成とクラウドにおける構成管理について

2

CloudFormation概要

3

開発環境の構築

4

テンプレートの実行方法、VPCの作成

5

EC2の作成 その1

6

EC2の作成 その2

7

RDS, ELBの作成、スタックのライフサイクル・分割

8

まとめ 、削除

大体の流れ

コードで管理することのメリットを説明

  • 秘伝のタレにならないこと
  • フィードバックをすぐに受けられること

Cloudformationの概要

  • テンプレート:リソースを定義
    • JSON/YAML形式のテキスト
    • スタックの設計図
  • スタック:テンプレートに含まれているリソースをまとめたもの
  • スタックはテンプレートに定義された構成で自動的に作成される
  • リソース作成時の依存関係は自動で解決されるが、明示的に指定することもできる
  • スタックの変更時は前回使用したテンプレートの差分を適用する
    • ここのイメージがよくわからない(チャプター2視聴時)
    • 今回使用するテンプレートは前回使用したテンプレートの差分を適用?
    • 丸ごと作り直すわけじゃないから効率がいいってこと?
  • リソース変更時に無停止変更、再起動を伴う変更、再作成のどれかがが発生する
  • 変更箇所の確認用にChange Setを作成できる
    • ぶっつけ本番にならない
  • リソースの削除を一括で行える
    • 事前に手動で変更をおこなっている場合は、依存関係でエラーが出るかも
  • スナップショットの取得や保持も行える
  • validate-templateは構文のチェックのみ行うためリソースが有効かどうかはチェックしない
  • パラメータが複数行になる場合は最初にパイプ"|"をつけてあげる
  • パラメータは大文字と小文字を区別する
  • 更新時のステータスがReplacement(置換)の場合、再作成されたリソースのIDが変更される・・?
  • ハンズオンではIDをハードコーディングしているが、本来はスタックからインポートするのが望ましい

スケーラブルウェブサイト編と同じ構成を作成した

複雑になるため、EC2,RDSは1台構成にした

AWS Cloud9上でコードを記述した

(詳しいことはBalck Beltを見るといいよ)

Cloud9のインスタンスもcfnのスタックとして扱われる

cfnにテンプレートをアップロードするとS3バケットが自動作成される

削除の順番も大事

 

宿題
  • テンプレートの要素を調べる
  • 複雑にしてみる
    • EC2を2台構成にする
    • RDSを2台構成にする
  • 定時でリソースを全て削除できるか試してみる
  • 手動変更をして削除時のエラーを出してみる
  • 基本的な操作をスクショして備忘録として保存
今後のこと
  • お客様事例の構成とかコード化してみたいなぁって思ってる
  • 大規模インフラ構築のコード化ってかっこいいと思う
  • スタックの分割やネストをよく考える必要がある
ラーニングパス
  • AWS CloudFormationのベストプラクティスを読み解く
  • インフラ構築に導入してみる
  • CodePipelineを利用したデプロイ
  • その他のBeginnersのハンズオン

最後に

次はサーバレスのハンズオンをしていきます。

↓今気になっているハンズオンはこちら↓

お役立ち Twitter Bot を作りながら学ぶ AWS ドリル ~第 1 回 おはよう Bot 編 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

費用のかかるEC2やその他サービスなどの後片付けはしっかりしましょう!(超重要)