AWS CloudFormation Master Class を受けてみた⑤「Resources と Mappings について」

はじめに

Udemy にて Stephane Maarek 氏 が提供している「 AWS CloudFormation Master Class 」コースについて紹介していきます。今回の内容は、「 CloudFormation Resources 」 です。
これまでの AWS CloudFormation Master Class の記事
その①「 CloudFormation について 」
その②「 CFnを利用したS3環境の構築
その③「 CloudFormation Designer でテンプレートの作成 」
その④「 Parameters について 」

CloudFormation Resources

CloudFormation Resources について

リソースとは、CloudFormation のテンプレートにおけるコアの部分です。以下の徴があります。
・テンプレートにおいて、AWS で扱われるサービスを構成する要素である
・AWS によって、リソースの追加や削除、更新が常に行われている
・224種類以上のリソースタイプが用意されている
・リソースタイプは「 AWS::aws-product-name::data-type-name 」と表現される(例:「 AWS::EC2::Instance 」)
リソースは実に224種類以上あるので、その全てを網羅するのは困難です。
AWS より、CloudFormation でサポートされている全リソースタイプの情報が紹介されてるので、そちらを参照しましょう。

下記のリンクから、AWS リソースが紹介されている先に飛ぶことができます。
AWS リソースおよびプロパティタイプのリファレンス
例:EC2 インスタンスのリソース

Hands On
それでは、実際にリソースの中身を見てみましょう。ダウンロードしたコードから、「 0-ec2-with-sg-eip.yaml 」YAML ファイルを開きます。ファイルを開くと、4つのリソースが記述されているのが分かります。

リソースのコードにおいて、重要な項目は以下の2つです。
●Type:リソースのタイプ
●Properties:リソースに対する追加要素(Properties 以下の内容が、そのリソースの追加要素)
※4つのリソースそれぞれについての詳しい内容は、下記のリンク先を参照ください
MyInstance ( EC2 リソース )
MyEIP ( Elastic IP リソース )
SSHSecurityGroup/ServerSecurityGroup ( Amazon EC2 セキュリティグループリソース )
リソースの内容は、CloudFormation Designer でも確認してみましょう。CloudFormation Designer を開いて、リソースのコードをコピペすることで、図で確認することができます。

Optional

リソースには、追加の動作や関係を制御するためにリソースに追加ができる属性というものが存在します。ここではその主な4つを紹介します。

●DependsOn
2つのリソースの依存関係を描くのに適している
●DelectionPolicy
リソースを削除から保護する(CloudFormation が削除されたとしても保護が可能)
●CreationPolicy
CFN-init のセクションに詳細な設定を加えることが可能
●MetaData
リソースに YAML や JSON 形式のデータの追加や、関数の組み込みなどが可能

CloudFormation Mappings

Mappings
次に、Mapping について紹介します。

Mapping は CloudFormation のテンプレートに組み込む変数のことを指します。
Mapping を使うことで、デベロップとプロダクトといった異なる環境、または Region といった異なる利用目的や異なる環境を区別しやすくなります。

また、以下のコマンドを使うことで、キーと関連付けた値を呼び出せます。

!FindInMap [ MapName, TopLevelKey, SecondLevelKey]

Pseudo Parameters
最後に、疑似パラメータについて紹介します。
AWS では、疑似パラメータがCloudFormation のテンプレートに用意されております。

●AWS::AcountId
スタックが作成されているアカウントの AWS アカウント ID を返す
●AWS::NotificationARNs
スタックの通知 ARN を返す
●AWS::Value
値を返さない
●AWS::Region
リージョンを返す
●AWS::StackId
図の様にコマンドで指定されたスタック ID を返す
●AWS::StackName
スタック名を返す

おわりに

CloudFormation の Resources と Mappings については以上です。次回では、CloudFormation の Conditionals や Metadata について紹介していきますので、お楽しみに!