あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

AWS CloudFormationについて調べてみた

CloudFormation、なんとなく使っているけどいろいろ機能があるので改めて調べてみた。



目次



CloudFormationとは

インフラストラクチャをテンプレートとしてコードで扱うことでAWSおよびサードパーティのリソースをモデル化しプロビジョニング、管理することができる。

CloudFormation概念

下記3つのコンポーネントで構成されている

  • テンプレートyaml、もしくはjson形式でプロビジョニングするリソースの情報を記述するテキストファイル。CloudFormationを始める場合、まずはテンプレートから作成を行う。
  • スタック:関連リソースをまとめたもの。単一のユニットで管理する。
  • 変更セット:スタックの実行中に変更を加える必要がある場合、変更セットを作成し実装前に確認できる。

テンプレートセクション

セクション 説明
Description テンプレートに関するコメントを記述する。
Metadata テンプレートに対する追加情報を記述する。CloudFormationデザイナーを使用すると自動で追加されるものもある。
Parameters スタック作成・更新時に選択できる値を指定できる。
Mappings キーと値をマッピングする。変数としての使用をする。
Conditions テンプレート内のリソース作成やプロパティ設定を制御する。本番環境と開発環境で異なる設定をしたい場合などに利用する。
Transform テンプレートの特定部分を処理し、それを異なる形式に変換する。
Resources スタックに含めるEC2インスタンスやS3バケットなどのAWSリソースを宣言する。
Outputs スタックの作成が完了した後に返される値を定義する。

組み込み関数

組み込み関数 短縮形 説明
Fn::And !And 条件をtrueまたはfalseで評価するために使用する。Fn::EqualsやFn::Containsなど一緒に使われる。
Fn::Contains !Contains 指定された文字列が文字列リストの少なくとも1つと一致する場合trueを返す。
Fn::Equals !Equals 2つの値を比較し、同じ場合trueを返す。
Fn::If !If テンプレートで条件分岐作成するために使用される。
Fn::Or !Or 指定された条件の中に少なくとも1つがtrueであるかを判定するために使用される。
Fn::Not !Not 指定された条件がfalseであるかとうかを判定するために使用される。
Fn::Sub !Sub 文字列内の変数をその評価された値に置き換える。
Fn::Ref !Ref リソースの値を参照するために使用される。リソースの物理IDを返す。

デザイナー

AWS CloudFormation テンプレートを作成、参照、および変更するためのグラフィックツール。デザイナー を使用すると、ドラッグアンドドロップインターフェースを使用してテンプレートリソースを図示し、統合された JSON および YAML エディタ を使用して詳細を編集できる。新しい AWS CloudFormation ユーザーでも経験豊富なユーザーでも、AWS CloudFormation デザイナーを使用すればテンプレートのリソース間の相互関係をすばやく確認し、簡単にテンプレートを変更できる。

StackSets

複数のアカウントおよび AWS リージョン のスタックを 1 度のオペレーションで、作成、更新、削除できるようにすることで、スタックの機能を拡張する。管理者アカウントを使用して、AWS CloudFormation テンプレートを定義および管理し、指定の AWS リージョン の選択されたターゲットアカウントにスタックをプロビジョニングする基盤としてテンプレートを使用する。




感想

何回もまとめてるけど忘れてしまう。。。( ̄д ̄;;)