ハンズオン:

     CloudFormationをつかったVPCへのシス
     テム移⾏行行



ARAKI Yasuhiro
このハンズオンのための準備

v CloudFormation(CFN)の知識識
v インストール
  v CloudFormationのコマンドラインツール
    (必須)
  v テキストエディタ(必須)
  v JSONエディタ(任意)

                      ARAKI Yasuhiro
CloudFormationのコマンドラインツール

v https://s3.amazonaws.com/cloudformation-‐‑‒cli/
   AWSCloudFormation-‐‑‒cli.zip




                                  ARAKI Yasuhiro
CFNをつかったVPC作成
https://gist.github.com/armaniacs/4752951#file-vpc-subnets-json	

v ここまでのGUI操作を
   CFNで




                                                   ARAKI Yasuhiro
最終的なCFNT
http://arakisa.s3.amazonaws.com/CloudFormation/eccube-vpc-09instance.json	




                                              ARAKI Yasuhiro
本ハンズオンの進め⽅方

v 時間がないので以下CFNTを実⾏行行
 v http://arakisa.s3.amazonaws.com/
   CloudFormation/eccube-‐‑‒
   vpc-‐‑‒09instance.json
v その中⾝身を解説していきます。


                         ARAKI Yasuhiro
VPC内にサービスを配置する

v VPC内部のサブネット作成が完了了したら、
  実際のサービス配置をはじめる
v 前章で作成したCFNTをVPCに対応させる




               ARAKI Yasuhiro
CFNTからCFNTを呼び出す
AWS::CloudFormation::Stack  

  "Resources"  :  {
                "vpcMake"  :  {
                        "Type"  :  "AWS::CloudFormation::Stack",
                        "Properties"  :  {
                                "TemplateURL"  :  "https://s3-‐‑‒ap-‐‑‒northeast-‐‑‒1.amazonaws.com/
arakisa
/CloudFormation/eccube-‐‑‒vpc-‐‑‒09vpc.json",
                                "TimeoutInMinutes"  :  "60"
                        }
                },

                                                             ARAKI Yasuhiro
呼び出し側のOutputsの利利⽤用

v eccube-‐‑‒vpc-‐‑‒09vpc.jsonはOutputsを定義
    v VPCID,  ELBSubnetAId,  ELBSubnetBId,  
      ECSubnetAId,  ECSubnetBId,  
      RDSSubnetAId,  RDSSubentBId
v 呼び出し元での使い⽅方
  {  “Fn::GetAtt”  :[“vpcMake”,  “Outputs.VPCID”]  }  


                                  ARAKI Yasuhiro
VPC環境に対応した修正  

v VPC内で使⽤用を定義するために特別なパラ
   メータをあたえなければならないリソースタ
   イプ
 v AWS::ElasticLoadBalancing::LoadBalancer
 v AWS::EC2::SecurityGroup
 v AWS::EC2::Instance
 v AWS::RDS::DBSubnetGroup
                            ARAKI Yasuhiro
AWS::ElasticLoadBalancing::LoadBalancer  

v ELBはVPCにおいては、配置するサブネッ
  トと、セキュリティグループを指定
   "elbeccube": {	
          "Type": "AWS::ElasticLoadBalancing::LoadBalancer",	
          "Properties": {	
            "Subnets": [	
                 { "Fn::GetAtt" :["vpcMake", "Outputs.ELBSubnetAId"] },	
                 { "Fn::GetAtt" :["vpcMake", "Outputs.ELBSubnetBId"] }	
            ],	
       "SecurityGroups" : [{"Ref" : "LoadBalancerSecurityGroup"}],	
           ……(略)
                                                ARAKI Yasuhiro
AWS::EC2::SecurityGroup  
v VPCに所属しているかをProperties中に
  VpcIdとして宣⾔言  
  "LoadBalancerSecurityGroup" : {	
       "Type" : "AWS::EC2::SecurityGroup",	
       "Properties" : {	
           "GroupDescription" : "Enable HTTP access on port 80",	
            "VpcId" : { "Fn::GetAtt" :["vpcMake", "Outputs.VPCID"] }, 	
           "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "80",
 "ToPort" : "80", "CidrIp" : "0.0.0.0/0" } ],	
           "SecurityGroupEgress" : [ { "IpProtocol" : "tcp", "FromPort" : "80",
 "ToPort" : "80", "CidrIp" : "0.0.0.0/0" } ]}},
                                                 ARAKI Yasuhiro
AWS::EC2::Instance

v SubnetIdを指定  
"instanceib3ba90b3": {	
       "Type": "AWS::EC2::Instance",	
       "Properties": {	
        "SubnetId": {"Fn::GetAtt":["vpcMake", "Outputs.ECSubnetAId"]},	
         …… (略)




                                            ARAKI Yasuhiro
AWS::RDS::DBSubnetGroup
  v SubnetIdを指定  
"MyDBSubnetGroup" : {	
     "Type" : "AWS::RDS::DBSubnetGroup",	
     "Properties" : {	
       "DBSubnetGroupDescription" : "Subnets available for the RDS DB Instance",	
       "SubnetIds" : [	
             { "Fn::GetAtt" :["vpcMake", "Outputs.RDSSubnetAId"] },	
           { "Fn::GetAtt" :["vpcMake", "Outputs.RDSSubnetBId"] }	
        ]}},




                                                 ARAKI Yasuhiro
AWS::RDS::DBSecurityGroup
v RDSにはDBSecurityGroupを指定
"dbsgdefault": {	
      "Type": "AWS::RDS::DBSecurityGroup",	
     "Properties":{	
        "GroupDescription": "RDS security group in private",	
         "EC2VpcId" : { "Fn::GetAtt" :["vpcMake", "Outputs.VPCID"] }, 	
        "DBSecurityGroupIngress": [{	
           "CIDRIP": "10.1.20.0/23"	
        } ]}}




                                             ARAKI Yasuhiro
最終的なCFNT
http://arakisa.s3.amazonaws.com/CloudFormation/eccube-vpc-09instance.json	




                                              ARAKI Yasuhiro

Jaws−横浜ハンズオンーCloudFormation w/ VPC 3/3