CloudFormation
https://gyazo.com/46e7fb0f3598376dfcdf5425ca835020
正式にはAWS CloudFormation
CFn と略す場合がある。
AWSのリソースをJSONやYAMLなどで定義し、デプロイできるサービス。
用語
テンプレート:AWSのリソースの定義を列挙したJSONやYAMLなどの形式のファイル(=スタック構築の設計図)
リソース:AWSの各種サービスの実体(EC2インスタンスとかVPCとかIAMとかAPI GatewayとかLambdaとか、、、)
スタック:テンプレートからプロビジョニングされるリソースの集合
テンプレートにいくつかのリソースの定義を列挙しておき、コマンドを実行することでスタックを作成できる。
リソースをコードで管理する(=Infrastructure as Code)ことで
インフラ構成の変化をコードの変更の差分として管理できる
CIにスタックをデプロイするコマンドを組み込んでおくだけでインフラ構成の変更が適用される(CDの実現)
といったメリットがある。
クロススタック参照という機能を使うと別のスタックのOutputsが参照できる。
スタックセットという機能を使うとアカウントやリージョンをまたいだスタックの複製ができる
CloudFormation スタックセットを利用した 複数のAWSアカウントやリージョンを横断したリソース展開
スタック更新の概要
-- AWS CloudFormation の仕組み
スタックの更新方式
直接更新 (default)
変更セットの作成と実行
の2種類がある。
-- AWS CloudFormation スタックの更新
スタックの更新動作
中断を伴わない更新
一時的な中断を伴う更新
置換
のどれか。
-- スタックのリソースの更新動作
サーバレスアプリケーションに最適化したAWS CloudFormationの拡張としてSAM (Serverless Application Model) というサービスがある。
参考:
CloudFormation超入門
CloudFormation入門
【CloudFormation入門1】5分と6行で始めるAWS CloudFormationテンプレートによるインフラ構築
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2017 Deployment on AWS
(2017年12月時点) 私的 CloudFormation ベストプラクティス