はじめに
Udemy にて Stephane Maarek 氏 が提供している「 AWS CloudFormation Master Class 」コースについて紹介していきます。今回の内容は、「 CloudFormation Resources 」と「 Mappings 」についてです。
- これまでの 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 リソースが紹介されている先に飛ぶことができます。
Hands On
それでは、実際にリソースの中身を見てみましょう。ダウンロードしたコードから、「 0-ec2-with-sg-eip.yaml 」YAML ファイルを開きます。ファイルを開くと、4つのリソースが記述されているのが分かります。

リソースのコードにおいて、重要な項目は以下の2つです。
- Type:リソースのタイプ
- Properties:リソースに対する追加要素(Properties 以下の内容が、そのリソースの追加要素)
※4つのリソースそれぞれについての詳しい内容は、下記のリンク先を参照ください
- [MyInstance ( EC2 リソース )] (https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html)
- 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 について紹介していきますので、お楽しみに!