この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
概要
-
先日、Step By StepでAWS Cloud Formationを使いこなせ!(入門1)をご紹介しました。(下記記事を参照ください)
-
本日はStep2としてAWS Cloud Formationのテンプレートの構成の基本を紹介したいと思います。
想定読者
・普段からある程度でAWSリソースを持ちましてWEBサービスを構築する経験が持っている方
・YAML形式のファイル作成の有識者。YAMLの基本知識について、先日に以下の記事で紹介しましたので、ご参照ください。
テンプレートの構成について
入門1の記事では以下のテンプレートでCloud Formationを経由してAWSリソースの作成方法をご紹介しました。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
HogeVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.10.0.0/16
このテンプレートでは、最も簡単な構成とはいえるかなと思います。実際にテンプレートでは下記のようにいくつかのセッションに分かれています。ご覧の通りに、Resourcesのセクションのみは必須とのことです。
- Format Version (任意)
- Description (任意)
- Metadata (任意)
- Parameters (任意)
- Mappings (任意)
- Resources (必須)
- Outputs (任意)
各セクションの詳細説明は以下のドキュメント資料をご確認ください。
テンプレートの使用>テンプレートの分析
こちらでは必須のResourcesの分のみ解説いたします。
Resources
AWSCFnのテンプレートにおいて唯一必須のセッションです。スタックに含める、タックに含める AWS リソース (Amazon EC2 インスタンスや Amazon S3 バケットなど) を宣言します。
公式ドキュメント:リソース
リソース部分のYAMLの構文には以下の通りです
Resources:
Logical ID:
Type: Resource type
Properties:
Set of properties
Logical ID
英数字(A-Za-z0-9)とし、テンプレート内で一意である必要なIDです。テンプレートの中で、他のリソースを参照する場合などは、このIDが使用する必要であります。また、作成したスタックのリソース一覧を確認するとこのIDでリソースが表示されます。
Resource type
実際に作成するリソースのタイプです。すべてのリソースタイプの一覧については、「AWS リソースおよびプロパティタイプのリファレンス」を参照してください。
Resource properties
Resourceを作成するときに指定できる追加オプションです。ResourceType(AWS::EC2::VPCとかAWS::EC2::Instanceなど)によって利用できるプロパティは異なるので、公式ドキュメントと確認しながら、作成していく必要みたいです。
リソースにImageIdを指定したテンプレートファイル例
たとえば、EC2 インスタンスごとに、そのインスタンスの AMI ID を指定する必要があります。次の例に示すように、AMI ID はインスタンスのプロパティとして宣言します
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyEC2Instance:
Type: "AWS::EC2::Instance"
Properties:
ImageId: "ami-0ff8a91507f77f867"
いかがでしょうか?最小の構成からAWS CloudFormationのテンプレートを解読すると、設定ファイルは非常にシンプルな感じが出てくれますよね。やる気が上がるんでしょう。機会がありましたら、ぜひ、IaaSのサービスCloudFormationを試してみてください。次回からもうちょっと複雑なテンプレートとリソースの作成を紹介したいと考えています。
最後までご読んだ頂き、ありがとうございました!それでは。