Amazon CloudFormation

Amazon CloudFormation:


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" } 
          } 
    } 
  } 
} 
"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を参照する」

となる。

実際に作成されたことがわかる。


image.png


コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)