Amazon CloudFormation
Amazon CloudFormation:
AWSでインスタンスやVPC環境を作成するとき、コンソール上で作ろうとすると、似たような環境を何度も作ったり、大量に作ったりする時は面倒。
そんな手間を一気に解消してくれるのがCloudFormaion。
平たく言うと「自動的にAWS上で作りたいものを作ってくれる」サービスです。
自分が作りたい環境を定義したファイルを作って、その定義書を読み込んで自動で環境を作ってくれます。
サンプルテンプレートも準備されている。
"Type" をそれぞれ書く必要があり、設定は "Properties" で書く。
AWS リソースおよびプロパティタイプのリファレンス を見てかけばいい。
シンプルそう。
慣れだろう。
"MyVPC"を例に見ていくと、
"Type" : "AWS::EC2::VPC"
は「10.0.0.0/16のCIDRでVPCを作り、作ったVPCのNameタグはdemo-VPCにする」
となる。
ちなみに "MyVPC" とかは論理IDなので任意のもので可。
"Ref" は参照するということ。
"AttachGateway"を例に見ていくと、
"VpcId" : { "Ref" : "MyVPC" },
は、「インターネットゲートウェイのIDはMyVPCを参照する」
となる。
実際に作成されたことがわかる。
1.Amazon CloudFormationとは?
AWSでインスタンスやVPC環境を作成するとき、コンソール上で作ろうとすると、似たような環境を何度も作ったり、大量に作ったりする時は面倒。そんな手間を一気に解消してくれるのがCloudFormaion。
平たく言うと「自動的にAWS上で作りたいものを作ってくれる」サービスです。
自分が作りたい環境を定義したファイルを作って、その定義書を読み込んで自動で環境を作ってくれます。
2.CloudFormation/Elastic Beanstalk/OpsWorksとの違い
| サービス名 | 説明 |
|---|---|
| CloudFormation | AWSリソースのプロビジョニングと管理をJSON/YAMLで行うことを目的とする |
| Elastic Beanstalk | Java、.NET、PHP、Node.js、Python、Ruby、Go、Docker で開発されたウェブアプリケーションとウェブサービスをデプロイおよびスケーリングする |
| OpsWorks | DevOps環境を提供することを目的におき、デプロイ、モニタリング、自動スケーリング、自動化の主要なアクティビティに対して統一された設定管理を行う |
3.サンプルテンプレート
サンプルテンプレートも準備されている。
4.CloudFormationを作成してみる
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : {
"MyVPC" : {
"Type" : "AWS::EC2::VPC",
"Properties" : {
"CidrBlock" : "10.0.0.0/16",
"EnableDnsSupport" : "true",
"EnableDnsHostnames" : "true",
"InstanceTenancy" : "default",
"Tags" : [ {"Key" : "Name", "Value" : "demo-VPC"} ]
}
},
"MyIGW" : {
"Type" : "AWS::EC2::InternetGateway",
"Properties" : {
"Tags" : [ {"Key" : "Name", "Value" : "demo-IGW"}]
}
},
"AttachGateway" : {
"Type" : "AWS::EC2::VPCGatewayAttachment",
"Properties" : {
"VpcId" : { "Ref" : "MyVPC" },
"InternetGatewayId" : { "Ref" : "MyIGW" }
}
},
"MySubnet" : {
"Type" : "AWS::EC2::Subnet",
"Properties" : {
"VpcId" : { "Ref" : "MyVPC" },
"CidrBlock" : "10.0.0.0/20",
"AvailabilityZone" : "ap-northeast-1a",
"Tags" : [ { "Key" : "Name", "Value" : "demo-Subnet" } ]
}
},
"MyRouteTable" : {
"Type" : "AWS::EC2::RouteTable",
"Properties" : {
"VpcId" : { "Ref" : "MyVPC" },
"Tags" : [ { "Key" : "Name", "Value" : "demo-RT" } ]
}
},
"SubnetAttache" : {
"Type" : "AWS::EC2::SubnetRouteTableAssociation",
"Properties" : {
"RouteTableId" : { "Ref" : "MyRouteTable" },
"SubnetId" : { "Ref" : "MySubnet" }
}
},
"MyRoute" : {
"Type" : "AWS::EC2::Route",
"Properties" : {
"RouteTableId" : { "Ref" : "MyRouteTable" },
"DestinationCidrBlock" : "0.0.0.0/0",
"GatewayId" : { "Ref" : "MyIGW" }
}
}
}
}
AWS リソースおよびプロパティタイプのリファレンス を見てかけばいい。
シンプルそう。
慣れだろう。
"MyVPC"を例に見ていくと、
"Type" : "AWS::EC2::VPC"
は「10.0.0.0/16のCIDRでVPCを作り、作ったVPCのNameタグはdemo-VPCにする」
となる。
ちなみに "MyVPC" とかは論理IDなので任意のもので可。
"Ref" は参照するということ。
"AttachGateway"を例に見ていくと、
"VpcId" : { "Ref" : "MyVPC" },
は、「インターネットゲートウェイのIDはMyVPCを参照する」
となる。
実際に作成されたことがわかる。
コメント
コメントを投稿