こんにちは、risakoです!
最近寒くなってきましたね
最近は体調を崩し気味なので、よく寝てよく食べて風邪を引かないように気をつけています
前回は、EC2を自動で増やしたり減らしてくれるAWS Auto Scalingについてご紹介しました!
今回は、AWS CloudFormation(以下、CloudFormation)について簡単ではありますがご紹介します。
#AWS CloudFormationを知ったきっかけ
このサービスを使い始めたきっかけは、一度設定したAWS Elemental MediaLiveを来年も使うかもしれない....と思った時に、そのまま残しておいては料金がかかってしまうためCloudFormationで書いてbacklog等メモで残しておけばいいのでは?との発想からでした。つまりは、節約のためです!
ちなみに、CloudFormationの利用自体は無料です!
テンプレートに従って構築された各AWSサービスに対して課金されるようです。
#そもそもAWS CloudFormationとは
AWS CloudFormation は、関連する AWS リソースの集約を整った予測可能な方法でプロビジョニングおよび更新し、開発者やシステム管理者が容易にそれらを作成、管理できるようにします。お客様は、AWS CloudFormation のサンプルテンプレートを使用したり、独自のテンプレートを作成したりして、AWS リソースと、アプリケーションを実行するために必要な関連するすべての依存関係やランタイムパラメータを記述できます。AWS のサービスをプロビジョニングする順番を見つけたり、依存関係が機能するように細かく注意したりする必要はありません。
参考:https://aws.amazon.com/jp/cloudformation/features/
すごくいいなと思ったところは、ベストプラクティスが盛り込まれたテンプレートで、1度作成してしまえば同じ構成を再現できるということです
#VPC&Subnet作成
テンプレートを参考に複数同時にVPCとSubnetを作成してみたいと思います。
VPCとSubnetはコンソール上でも作成が簡単なので、CloufFormationでも簡単に作成できます。且つ、一緒に作成もできてしまうので時間短縮にもなります!
###VPCテンプレート(YAML)
Type: AWS::EC2::VPC
Properties:
CidrBlock: String
EnableDnsHostnames: Boolean
EnableDnsSupport: Boolean
InstanceTenancy: String
Tags:
- Tag
###必須事項
- CidrBlock
###Subnetテンプレート(YAML)
Type: AWS::EC2::Subnet
Properties:
AssignIpv6AddressOnCreation: Boolean
AvailabilityZone: String
CidrBlock: String
Ipv6CidrBlock: String
MapPublicIpOnLaunch: Boolean
Tags:
- Tag
VpcId: String
###必須事項
- CidrBlock
- VPCID
##実際に作成してみる
Resources:
myVPC1:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: 10.15.0.0/16
EnableDnsSupport: 'false'
EnableDnsHostnames: 'false'
Tags:
- Key: Name
Value: testA
myVPC2:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: 10.30.0.0/16
EnableDnsSupport: 'false'
EnableDnsHostnames: 'false'
Tags:
- Key: Name
Value: testB
PublicSubnetA:
Type: AWS::EC2::Subnet
Properties:
VpcId:
Ref: myVPC2
CidrBlock: 10.30.0.0/24
AvailabilityZone: "ap-northeast-1a"
Tags:
- Key: Name
Value: test-public
PrivateSubnetB:
Type: AWS::EC2::Subnet
Properties:
VpcId:
Ref: myVPC1
CidrBlock: 10.15.0.0/24
AvailabilityZone: "ap-northeast-1c"
Tags:
- Key: Name
Value: test-private
##コンソールで確認してみる
###VPC
名前:TestA
CIDR: 0.15.0.0/16
名前:TestB
CIDR:10.30.0.0/16
###Subnet
名前:test-public
AZ:ap-northeast-1a
紐づいているVPC:testB
名前:test-private
AZ:ap-northeast-1c
紐づいているVPC:testA
CloudFormationに記述した通りに作成できているのが確認できました!
今回使用したテンプレートを保存しておけば次にVPCを作成するときに便利です!
また、既存の名前やCIDRを入力してしまうとうまく作成されないので注意です
今回もお読みいただきありがとうございました
#参考資料
-
AWS ドキュメントAWS::EC2::VPC
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html -
AWS ドキュメント AWS::EC2::Subnet
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html -
AWS Black Belt Online Seminar [AWS Cllud Formation]
https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-2016-aws-cloudformation