AWS CloudFormation とは?
概要
AWS CloudFormation は、AWS リソースをコードとして管理するためのサービスです。インフラストラクチャをテンプレートファイル(YAML または JSON 形式)で定義し、そのテンプレートを使用して AWS リソースをプロビジョニング、更新、削除することができます。
主な機能
-
テンプレートベースの管理
- インフラストラクチャをテンプレートファイルで定義することで、再現性のある環境を簡単に作成できます。
-
スタック
- テンプレートを使用して作成されたリソースの集合を「スタック」と呼びます。スタック単位でリソースの管理が可能です。
-
依存関係の管理
- リソース間の依存関係を自動的に解決し、正しい順序でリソースを作成します。
-
変更セット
- スタックの更新前に変更内容をプレビューできる「変更セット」を作成し、リスクを最小限に抑えます。
-
ロールバック
- スタックの作成や更新が失敗した場合、自動的にロールバックして前の状態に戻します。
利用例
-
インフラストラクチャの自動化
- 開発、テスト、本番環境のインフラストラクチャを自動化し、一貫性を保つことができます。
-
継続的デリバリー
- CI/CD パイプラインに組み込むことで、インフラストラクチャの変更を自動的にデプロイできます。
-
複数環境の管理
- 同じテンプレートを使用して、異なる環境(開発、ステージング、本番)に同一のインフラストラクチャをデプロイできます。
テンプレートの例
以下は、シンプルな EC2 インスタンスを作成する CloudFormation テンプレートの例です。
CloudFormation Templateファイル
AWSTemplateFormatVersion: "2010-09-09"
Description: A sample template
Resources:
MyEC2Instance: #An inline comment
Type: "AWS::EC2::Instance"
Properties:
ImageId: "ami-0ff8a91507f77f867" #Another comment -- This is a Linux AMI
InstanceType: t2.micro
KeyName: testkey
BlockDeviceMappings:
-
DeviceName: /dev/sdm
Ebs:
VolumeType: io1
Iops: 200
DeleteOnTermination: false
VolumeSize: 20
このテンプレートは、t2.micro
タイプの EC2 インスタンスを作成します。ImageId
には Amazon Linux 2 の AMI ID を指定し、KeyName
には事前に作成したキーペアの名前を指定します。
まとめ
AWS CloudFormation を使用することで、インフラストラクチャの管理が効率化され、手動による設定ミスを防ぐことができます。
参考