Cloud Formation を使って VPC~EC2 まで構築する
手順
Cloud Formation で VPC ~ EC2 を構築してみます。
「~」としていますが、中身は単純でパブリックサブネット内に EC2 を立てて、インターネットにつなげるようにしているだけです。
- テンプレートを作成する。
- スタックを実行する。
参考
前提
- キーペアが作成してある事。
テンプレートを作成する
yaml 形式でテンプレートを記述してみます。
- hoge.yaml とか適当な名前でファイルを作成する。
- 作成したファイルに次の記述を記載する。
AWSTemplateFormatVersion: "2010-09-09"
Description: "CloudFormation Template Test"
# Setting key and IP
Parameters:
KeyName:
Description: The EC2 Key Pair to allow SSH access to the instance
Type: "AWS::EC2::KeyPair::KeyName"
MyIP:
Description: IP address allowed to access EC2
Type: String
Resources:
# VPC
HogeVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: "10.0.0.0/16"
EnableDnsSupport: "true"
EnableDnsHostnames: "true"
InstanceTenancy: "default"
Tags:
- Key: Name
Value: "hoge-vpc"
# InternetGateway
HogeInternetGateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: "hoge-igw"
HogeAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref HogeVPC
InternetGatewayId: !Ref HogeInternetGateway
# Subnet
HogePrivateSubnet:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: "ap-northeast-1a"
CidrBlock: "10.0.0.0/24"
VpcId: !Ref HogeVPC
Tags:
- Key: Name
Value: "hoge-private-subnet"
HogePublicSubnet:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: "ap-northeast-1c"
CidrBlock: "10.0.1.0/24"
VpcId: !Ref HogeVPC
Tags:
- Key: Name
Value: "hoge-public-subnet"
# RouteTable
HogePublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref HogeVPC
Tags:
- Key: Name
Value: !Sub hoge-public-routetable
HogePublicRoute:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref HogePublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref HogeInternetGateway
# Subnet to attach
HogePublicSubnetRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref HogePublicSubnet
RouteTableId: !Ref HogePublicRouteTable
# EC2
EC2:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-00d101850e971728d
KeyName: !Ref KeyName
InstanceType: t2.micro
NetworkInterfaces: # assign public IP
- AssociatePublicIpAddress: "true"
DeviceIndex: "0"
SubnetId: !Ref HogePublicSubnet
GroupSet:
- !Ref EC2SG
UserData: !Base64 | # coding commands what you want
#!/bin/bash
sudo yum install -y git
Tags:
- Key: Name
Value: hogeEC2
# SecurityGroup
EC2SG:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: hoge-sg
GroupDescription: Allow SSH and HTTP access only MyIP
VpcId: !Ref HogeVPC
SecurityGroupIngress:
# http
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: !Ref MyIP
# ssh
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: !Ref MyIP
Outputs:
EC2PublicIP:
Value: !GetAtt EC2.PublicIp
Description: Public IP of EC2 instance
スタックを実行する
- Cloud Formation と検索して「Cloud Formation」をクリックする。
- 「スタックの作成」をクリックする。
- 「テンプレートの準備完了」を選択する。
- 「テンプレートファイルのアップロード」を選択する。
- 「ファイルの選択」をクリックし、作成したファイルをアップロードする。
- 「次へ」をクリックする。
- 「スタックの名前」に「hoge-stack」と入力する。
- 「KeyName」で作成済みのキーを選択する。
- 「MyIP」に SSH を許可する IP を入力する。
- 「次へ」をクリックする。
- 「タグ」で、キーを「Name」値を「hoge-stack」と入力する。
- 「次へ」をクリックする。
- 確認したら「スタックの作成」をクリックする。
SSH する
- 「出力」タブをクリックし「値」に記載がある IP を確認する。
- 下記のコードを ssh の config に追加して接続する。
Host hogeEC2
User ec2-user
HostName [確認したIP]
Port 22
IdentityFile ~/.ssh/[作成したキーペアの pem ファイル名]
ディスカッション
コメント一覧
まだ、コメントがありません