概要
awsのCloudFormatinon
を使用し、テスト用にインスタンスを一つ作成します。
CloudFormationとは
AWSのシステム構成をJSON
やYAML
で書かれたテンプレートを使用し、管理・修正・編集などを自動で行うことができる機能です。
テンプレートによって作成された環境はスタック
と呼ばれます。
ファイルを作成しておくことで環境を使いまわせる点が非常に便利です。
テンプレートについて
今回作成する環境のテンプレートは以下の通りです。
テスト用のインスタンスを一つ立ち上げる構成となっています。
組み込み関数であるRef
で構成を紐づけているイメージとなります。
なお以下例ではsshのSGを0.0.0.0/0
としているので、各自の環境に合わせ修正してください。
# デフォルト記述
AWSTemplateFormatVersion: '2010-09-09'
# Key pair の指定。
# AWSコンソールでパラメータを指定
Parameters:
KeyPair:
Description: KeyPair Name
Type: AWS::EC2::KeyPair::KeyName
# EC2のイメージID
Mappings:
StackConfig:
EC2:
ImageId: 'ami-923d12f5'
Resources:
# VPCの作成
PracticeVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Tags:
- Key: Name
Value: PracticeVPC
# InternetGateWayの作成
PracticeIGW:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: PracticeIGW
# IGWをVPCにアタッチ
AttachIGW:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref PracticeIGW
VpcId: !Ref PracticeVPC
# RouteTableの作成
PracticePublicRoute:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref PracticeVPC
Tags:
- Key: Name
Value: PracticePublicRoute
# Routeingの設定
Route:
Type: AWS::EC2::Route
DependsOn: AttachIGW
Properties:
RouteTableId: !Ref PracticePublicRoute
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref PracticeIGW
# PublicSubnetの作成
PublicSubnet:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: ap-northeast-1a
CidrBlock: 10.0.1.0/24
VpcId: !Ref PracticeVPC
Tags:
- Key: Name
Value: PracticePublicSubnet
# SubnetにRouteテーブルを紐づける
PublicSubnetRouteTabelAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PublicSubnet
RouteTableId: !Ref PracticePublicRoute
# セキュリティグループの作成
# port22と80を解放
PracticeSG:
Type: AWS::EC2::SecurityGroup
Properties:
VpcId: !Ref PracticeVPC
GroupDescription: PracticeSG
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
Tags:
- Key: Name
Value: PracticeSG
# EC2インスタンスの作成
PracticeEC2:
Type: AWS::EC2::Instance
Properties:
AvailabilityZone: ap-northeast-1a
InstanceType: t2.micro
ImageId: !FindInMap [ StackConfig, EC2, ImageId ]
KeyName: !Ref KeyPair
SubnetId: !Ref PublicSubnet
SecurityGroupIds:
- !GetAtt PracticeSG.GroupId
Tags:
- Key: Name
Value: PracticeEnv
# ElasticIPの作成
PracticeIP:
Type: AWS::EC2::EIP
Properties:
InstanceId: !Ref PracticeEC2
環境の作成
AWSコンソールにて以下手順で作成を行います。
サービス → CloudFormation → スタックの作成 → スタックの詳細 → オプションの設定 → スタックの作成
- スタックの作成
作成したyamlファイルをアップロードします。
- スタックの詳細
スタックの名前とパラメータを指定します。
任意の名前と、sshを行うための各自の秘密鍵を指定してください。
- オプションの設定
タグやIAMロール、アラームなどを設定できますが今回は特に設定を行いません。
スタックの作成を押下し、CREATE_COMPLETE
となれば完了です。
環境の削除
CloudFormationで作成した環境は、対象のスタックを削除することでそのスタックで作成された環境を一括で削除することができます。