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つを紹介します。

●DependsOn2つのリソースの依存関係を描くのに適している●DelectionPolicyリソースを削除から保護する(CloudFormation が削除されたとしても保護が可能)●CreationPolicyCFN-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 について紹介していきますので、お楽しみに!

この記事を書いた人

aws-recipe-user