SAA学習-環境の自動化-CloudFormationの概要
今回のテーマ:CloudFormationの概要
主要サービスの公式資料
AWS CloudFormation: docs.aws.amazon.com
CloudFormation
AWSクラウド環境内の全インフラリソースを記述し、テンプレート化することで展開する環境自動設定サービスとなります。
特徴としては以下のものが挙げられます。
- プロビジョニングされたリソースの変更・削除が可能
- JSON/YAMLで記述
- クロスリージョンとクロスアカウントで管理
- 直接サポートされてないリソースや機能を利用する場合、カスタムリソースを使用
- カスタムリソース使用時、スタック作成の一部に独自ロジックを実装
ユースケース
CloudFormationを使用する場合、環境構築を正確に実施する場合や効率的に展開したい時に使用します。
実装時のためのポイントは以下のものが挙げられます。
- AWSリソースの構築を効率化
- 開発/テスト/本番環境で利用するインフラの標準化
- 毎回小野路リソースやプロビジョニング設定を正確に利用
- ソフトウェアと同じように環境構築を管理
CloudFormationの構成
CloudFormationの構成は、テンプレートで定義された内容を読み込みAWSリソースの集合体であるスタックを作成します。
構成要素のポイントは以下のものがあります。
Cloud Formation
スタックの作成/変更/削除/エラー検知とロールバックやリソース間の依存関係を自動判定スタック
AWSリソースの集合体でスタック単位で管理可能。
スタックを削除すると関連したリソースも削除
CloudFormationの機能
CloudFormationの機能は、テンプレート自体を管理や便利に使うための機能を提供してます。
機能の要素は以下ものが挙げられます。
要素 | 概要 |
---|---|
変更セット | ・スタックの更新を行うための概要 ・変更による影響度を確認するためのスタック ・スタック変更は直接更新と変更セットの実行で可能 |
ドリフト | ・テンプレートによって展開したAWSリソースを展開語に変更した場合、元テンプレートとの差分を検出するチェック機能 |
スタックセット | ・複数のAWSアカウント複数のリージョンに対しスタックを作成できる機能 |
スタック間のリソース参照機能 | ・被参照添付レートの参照値をエクスポートし、値を抽出 ・参照先のテンプレートのインポートによりリソース参照を行うことで、連携したインフラ展開が可能 |
また、CloudFormationデザイナーを利用することで、視覚的にテンプレートを作成することが可能です。
テンプレート
実装する際のサンプルは以下のようなものがあります。
AWSTemplateFormatVersion: Description: Metadata: Parameters: Mappings: Conditions: Transform: Resources: FirstVPC: Type:AWS::EC2::VPC Properies: CidrBlock:10.0.0.0/16 Tags: -Key:Name Value:FirstVPC AttacheGateway: Type:AWS::EC2::VPCGatewayAttachement Properies: DependOn: VpcId: !Ref FirstVPC InternetGatewayID: !Ref InternetGateway Outputs:
実装要素の補足説明は以下となります。
項目 | 補足説明 |
---|---|
AWSTemplateFormatVersion | テンプレートのバージョンを指定 |
Description | テンプレートの説明 |
Metadata | テンプレートに関する追加情報 |
Parameters | 実行時に必要なパラメーターとしてKeypairやユーザー名を記述。定義するとRef関数で値参照が可能 |
Mappings | 条件パラメーターを指定するためのキーと値のマッピングを記述 |
Conditions | リソース作成時の条件名と条件内容を記述 |
Transform | サーバレスアプリのSAMバージョンを記述 |
Resources | 実際にスタックを生成するリソースとそのプロパティを記述 |
Outputs | スタック構築後に出力される値や出力先を記述 |
実際に作成するリソースの名称やプロパティの記述となります。
FirstVPC: Type:AWS::EC2::VPC Properies: CidrBlock:10.0.0.0/16 Tags: -Key:Name Value:FirstVPC
任意にユーザー側でリソース間の依存関係を実装する記述となります。
Properies: DependOn:
組込関数:RefやFindInMapの活用部分となります。
AWS標準の設定値を参照する場合はRefを使用し、Mappingsで定義した値を参照する場合はFindInMapを使用します。
VpcId: !Ref FirstVPC
今回のテーマ以上です。