手を動かしながら2週間で学ぶ AWS 基本から応用まで Day14
Day14 CloudFormationを用いた環境構築の自動化
CloudFormationについて
Infrastructure as Code
1. シンプルなテンプレートでVPCを作る
一般的なテンプレートスニペット - AWS CloudFormation
template.yml
AWSTemplateFormatVersion: '2010-09-09' Description: Test cfn Template AWSTemplateFormatVersion: '2010-09-09' Description: Test cfn Template Resources: cfnVpc: Type: 'AWS::EC2::VPC' Properties: CidrBlock: '192.168.0.0/16' Tags: - Key: 'Name' Value: 'cfn-vpc'
CloudFormation→新しいスタックの作成
作成したテンプレートファイルをアップロード
作成
2. Ref関数を使ってSubnetを作る
サブネットで作成したVPCを参照するようにする
AWSTemplateFormatVersion: '2010-09-09' Description: Test cfn Template Resources: cfnVpc: Type: 'AWS::EC2::VPC' Properties: CidrBlock: '192.168.0.0/16' Tags: - Key: 'Name' Value: 'cfn-vpc' cfnSubnet: Type: 'AWS::EC2::Subnet' Properties: CidrBlock: '192.168.1.0/24' MapPublicIpOnLaunch: true Tags: - Key: 'Name' Value: 'cfn-subnet' VpcId: !Ref cfnVpc
スタック→アクション→スタックの更新
3. EC2インスタンスの雛形を作成する
EC2のパラメータを作成
Parameters: InstanceType: Type: String Default: t2.micro AllowedValues: - t2.micro - t2.small - t2.medium Description: Select EC2 instance type. InstanceType: !Ref InstanceType
EC2にキーペアを入れる
KeyPair: Description: Select KeyPair Name. Type: AWS::EC2::KeyPair::KeyName Resources: cfnEC2Instance: Type: 'AWS::EC2::Instance' Properties: KeyName: !Ref KeyPair
リージョンによってAMIを選択する
Mappings: RegionMap: us-east-1: hvm: "ami-a4c7edb2" ap-northeast-1: hvm: "ami-3bd3c45c" Resources: cfnEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", hvm ]