こんにちは、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