AWS CloudFormationは、Amazon Web Services(AWS)が提供するサービスの一つです。このサービスを使うと、AWS上で必要なリソースをコードで定義し、自動的に作成することができます。これにより、手動での設定ミスを減らし、効率的にインフラを管理できるようになります。
テンプレートは、CloudFormationがリソースを作成するための設計図のようなものです。このテンプレートには、作成したいリソースの情報が記述されています。一般的にはJSONまたはYAML形式で書きます。
スタックとは、テンプレートに基づいて作られる一連のAWSリソースの集合のことです。例えば、EC2インスタンスやS3バケットなど、関連するリソースをまとめて管理することができます。
以下のコードは、仮想プライベートクラウド(VPC)を作成するための基本的なテンプレートです。
AWSTemplateFormatVersion: '2010-09-09'
Description: My first VPC
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: MyVPC
上記のコードでは、10.0.0.0/16というCIDRブロックを持つVPCを作成しています。
テンプレートを書く際には、構文エラーに注意が必要です。AWSのコンソールには、テンプレートを検証する機能があります。これを利用して、エラーがないか確認しましょう。
VPCを作成したら、それを保護するためにセキュリティグループを追加することが重要です。以下のコードは、ポート80(HTTP)をオープンにしたセキュリティグループの定義です。
MySecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable HTTP access
VpcId: !Ref MyVPC
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
このコードでは、指定したVPCに対してHTTPトラフィックを許可しています。
CloudFormationでは、リソースの作成順序を制御するために依存関係を定義できます。例えば、EC2インスタンスはVPCが作成されてからでないと作成できません。これを指定するには、DependsOn
属性を使用します。
MyEC2Instance:
Type: AWS::EC2::Instance
DependsOn: MyVPC
Properties:
InstanceType: t2.micro
ImageId: ami-0c55b159cbfafe01a
NetworkInterfaces:
- AssociatePublicIpAddress: 'true'
DeviceIndex: '0'
NetworkId: !Ref MyVPC
AWS CloudFormationを使うことで、複雑なインフラを簡単に作成し、管理することができます。初めは基本的なテンプレートを作成することから始め、徐々に応用に挑戦していくと良いでしょう。