SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
AWSマイスターシリーズ Reloaded
~AWS CloudFormation~


                2012年04月02日
                片山 暁雄( @c9katayama )
                ソリューションアーキテクト
                akiok@amazon.co.jp
Agenda
 CloudFormationの概要
 スタック
 テンプレート
 Cloud-init
 CloudFormation helpers
 CloudFormer
 その他Tips
 まとめ

               Copyright © 2011 Amazon Web Services
CloudFormationの概要
CloudFormation

 EC2やELBなどを使ったAWSサービスのシステム構築を、設
 定ファイル(テンプレート)を元に行えるサービス

 テンプレートを自由に作成できるため、自分好みのシステム
 構成が可能

 テンプレートは、AWSのサービスを操るための新しい言語
CloudFormationのイメージ
                                     テンプレートに基づき
                                      各サービスが起動
                     スタック




                        ElasticLoadBalanceing
テンプレート
                                                   S3

           Cloud
         Formation
                                                   SNS


                            EC2         EC2
                              AutoScaling
                                                CloudWatch
利用シーンと利点
一度テンプレートを作成すれば、同じ構成を再現できる
  開発環境の構築
  Blogシステム、Webシステム、ゲームプラットフォームなど、
   同じ仕組みでアプリやデータが異なるようなもの

ベストプラクティスが盛り込まれたテンプレートが使用可能
  システムアーキテクチャの再利用
  WordPress,Redmineなどが入った、多くのサンプルテンプレ
   ートが提供済み

起動時にパラメータを渡せる
  例えばDBのエンドポイントをEC2に渡せる
利用料金

CloudFormationの利用自体は無料

テンプレートに従って構築された各AWSサービスに対して
課金
スタック
スタック

リソース(EC2インスタンスやS3バケット、RDSインスタン
スなど)の集合のこと

スタック単位でリソースの管理が可能。スタック破棄を実行
すると、スタックにひもづくリソースを破棄することが可能

使用するリソースおよびリソースの構築順は、テンプレート
の依存関係で決定

 スタック           これらを一度に生成・破棄可能

               App      Web
              Server   Server
スタック可能なリソース
    これらをスタックに組み込み、設定を行える
Amazon EC2 Instances                       Amazon Simple Storage Service (S3) Buckets

Amazon Elastic Block Store (EBS) Volumes   Amazon Simple DB Domains

Elastic Load Balancers                     Amazon Simple Queue Service (SQS) Queues

Elastic IP Addresses                       Amazon Simple Notification Service (SNS) Topics

Amazon EC2 Security Groups                 Amazon SNS Subscriptions

Auto Scaling Groups                        Amazon Route 53 DNS Records
Amazon Relational Database Service (RDS)
                                           Amazon CloudFront Distributions
Instances
                                           AWS Identity and Access Management users and
Amazon RDS Security Groups
                                           groups
AWS Elastic Beanstalk                      AWS Identify and Access Management policies

Amazon CloudWatch Alarms                   New!! Amazon Virtual Private Cloud

New!! Amazon ElastiCache
スタック構築方法

AWS ManagementConsoleから構築
コマンドラインツール
  http://aws.amazon.com/developertools/AWS-
   CloudFormation/2555753788650372
Java・.Net・PHPの各種SDK
  Java : http://aws.amazon.com/jp/sdkforjava/
  .NET : http://aws.amazon.com/jp/sdkfornet/
  PHP : http://aws.amazon.com/jp/sdkforphp/
AWS ManagementConsoleから構築-1




                 スタックの名称


              ・サンプルテンプレート

               ・ローカルファイルの
                               いずれか
                テンプレート

              ・テンプレートファイルURL
              (同一リージョンのS3上)
AWS ManagementConsoleから構築-2




                  各種パラメータの入力
                  (後で説明)
AWS ManagementConsoleから構築-3




                 スタック構築開始
AWS ManagementConsoleから構築-4




                  スタック構築実行中
AWS ManagementConsoleから構築-5




                  スタック構築完了
                  この時点ですべてのサービスが
                  起動している
テンプレート
{
                         "AWSTemplateFormatVersion" : "2010-09-09",

テンプレート                   "Description" : “Sample",

                         "Parameters" : {
                           "KeyName" : {
                             "Description" : “Sample key,
                             "Type" : "String"
                           }
                         },
                         "Mappings" : {
                         },

                         "Resources" : {

CloudFormationの心臓部
                          "Ec2Instance" : {
                            "Type" : "AWS::EC2::Instance",
                            "Properties" : {
スタック構築の設計図                    "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ],
                              "KeyName" : { "Ref" : "KeyName" },

JSONフォーマットで記述
                              "ImageId" : { "Fn::FindInMap" : [
                                  "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}
                            }
                          },

                             "InstanceSecurityGroup" : {
                               "Type" : "AWS::EC2::SecurityGroup",
                               "Properties" : {
                                 "GroupDescription" : "Enable SSH access via port 22",
                                 "SecurityGroupIngress" : [ {
                                  "IpProtocol" : "tcp",
                                  "FromPort" : "22",
                                  "ToPort" : "22",
                                  "CidrIp" : "0.0.0.0/0"
                                 }]
                               }
                             }
                         }
                     }
テンプレート解説
                                                         テンプレートのバージョン
{                                                         (最新は2010-09-09)
    "AWSTemplateFormatVersion" : “2010-09-09",

    "Description" : "Valid JSON strings up to 4K",     テンプレートの詳細(説明文)

    "Parameters" : {
       set of parameters                                 CloudFormation実行時に
    },                                                 後で変更可能なパラメータを列挙
                                                        (例:DBユーザー名など)
    "Mappings" : {
        set of mappings
     },                                                  Hashtableのようなもの
                                                        キーに応じて値を特定出来る
    "Resources" : {                                  (例:リージョンに応じたAMI番号など)
        set of resources
     },
                                                      EC2やRDSなど、スタックを構成する
    "Outputs" : {                                            リソースを定義
      set of outputs
    }
}                                                      スタック構築後に取得したい値
                                                        (例:アクセスURLなど)
Parameters
{
    "AWSTemplateFormatVersion" : “2010-09-09",

    "Description" : "Valid JSON strings up to 4K",

    "Parameters" : {
       set of parameters                               CloudFormation実行時に
    },                                               後で変更可能なパラメータを列挙
                                                      (例:DBユーザー名など)
    "Mappings" : {
        set of mappings
     },

    "Resources" : {
        set of resources
     },

    "Outputs" : {
      set of outputs
    }
}
Parametersとは
   スタック構築時に値の入力が可能
   データ型、デフォルト値、最小最大値など設定可能


"Parameters" : {
  "Age":{
     "Type":"Number",
     “Default” : “30”,
     “MinValue”: “20”,
     “MaxValue”: “60”,
     "Description":"input your age.“
  },
  "FirstName":{
     "Type":"String",
     "Description":"input your first name.“
  },
}
Parametersのプロパティ
  利用出来るプロパティ
プロパティ                   内容
Type                    データ型 “String” “Number” “CommaDelimitedList”
Default                 デフォルト値
NoEcho                  入力時に*****となる(パスワードなどに使用)
AllowedValues           入力可能値の一覧指定 (例:[“true”,”false”] )
AllowedPattern          正規表現で入力可能パターンを指定(例:[a-zA-Z]*)
MaxLength               最大文字数
MaxValue                最大値
MinValue                最小値
Description             プロパティの詳細説明
ConstraintDescription   入力した値がAllowedPatternやMaxLengthなどの制約
                        に引っかかった時に表示する説明
                        (どのような制約があるかの説明を記述)
Parametersの参照
 入力したパラメータ値は、テンプレート中で “Ref”を使用し
 て参照可能
 ユーザー名、パスワード、ドメインなどの可変部分に便利




                          ここにパラメータ入力値が反映される
                “Resources" : {
                  “MyServer":{
                    “Type":“AWS::EC2::Instance",
                    “Properties” : {
                      “KeyName”: { “Ref” : “Age”},
                      “Tags” : { “Ref” : “FirstName”}
                    }
                  }
                }
Function
    Ref
      パラメータを参照する
    Fn::Base64
      文字列をBase64エンコードする
    Fn::FindInMap
      Mapから値を取り出す
    Fn::GetAtt
      リソースから属性を取り出す
      例:"Fn::GetAtt" : [ "MyELB" , "DNSName"]
    Fn:GetAZs
      指定リージョンのアベイラビリティゾーンを返す
    Fn:Join
      文字列の連結
      “Fn::Join” : [ “:”, [ “a”, “b”, “c” ] ] は 「a:b:c」を返す
      “:”がセパレータ。不要な場合は ”” を定義


http://docs.amazonwebservices.com/AWSCloudFormation/latest/UserGuide/index.
html?intrinsic-function-reference.html
Pseudo Parameter
    実行リージョンやスタック名といったパラメータを取得出来る予約語
    AWS::Region
      スタック構築対象のリージョンを取得する
      { “Ref” : “AWS::Region” } で値を取得可能
    AWS::StackName
      スタックの名前を取得する
      { “Ref” : “AWS::StackName” } で値を取得可能

    “Resources" : {
      “MyServer":{
        “Type":“AWS::EC2::Instance",
        “Properties” : {
          “KeyName”: { “Ref” : “AWS::StackName”},
          “Tags” : { “Ref” : “AWS::Region”}
        }
      }
    }



http://docs.amazonwebservices.com/AWSCloudFormation/latest/UserGuide/index.
html?pseudo-parameter-reference.html
Mappings
{
    "AWSTemplateFormatVersion" : “2010-09-09",

    "Description" : "Valid JSON strings up to 4K",

    "Parameters" : {
       set of parameters
    },

    "Mappings" : {
        set of mappings
     },                                                  Hashtableのようなもの
                                                        キーに応じて値を特定出来る
    "Resources" : {                                  (例:リージョンに応じたAMI番号など)
        set of resources
     },

    "Outputs" : {
      set of outputs
    }
}
Mappingsとは
     キーとバリューのテーブル
     例えば、入力値やリージョンによって値が変わるようなもの
     を決めるような使い方
"Mappings" : {
   "RegionTable" : {
     "us-east-1" : {                   マッピングを定義
        "AMI" : "ami-8c1fece5“,   (この例の場合、”RegionTable”という
        “Key” : “myKey-east”          マッピングを定義)
     },
     "us-west-1" : {
        "AMI" : "ami-3bc9997e“,    “Fn::FindInTemplate”
        “Key” : “myKey-west”
     },
     "ap-northeast-1" : {
        "AMI" : "ami-300ca731“,
        “Key” : “myKey-japan”
     }
   }
 },
Mappingsの使い方
     “Fn:FindInMap”で値を取得
     "Fn::FindInMap" : [ "MapName", "Key", "Value"]
     MapName,key,Valueには”Ref”が利用可能

"Mappings" : {
   "RegionTable" : {
     "us-east-1" : {              “Resources" : {
        "AMI" : "ami-8c1fece5“,     “MyServer":{
        “Key” : “myKey-east”          “Type":“AWS::EC2::Instance",
     },                               “Properties” : {
     "us-west-1" : {                    “ImageId”: {
                                      “Fn::FindInTemplate”
        "AMI" : "ami-3bc9997e“,               “Fn:FindInMap” : [
        “Key” : “myKey-west”                          “RegionTable” ,
     },                                                  { “Ref” : “region” },
     "ap-northeast-1" : {                                     “AMI”]
        "AMI" : "ami-300ca731“,                      },
        “Key” : “myKey-japan”         }
     }                              }
   }                              }                           この例だと、入力された
 },                                                  regionパラメータによって
                                                    利用するAMIのIDを決定できる
Resources
{
    "AWSTemplateFormatVersion" : “2010-09-09",

    "Description" : "Valid JSON strings up to 4K",

    "Parameters" : {
       set of parameters
    },

    "Mappings" : {
        set of mappings
     },

    "Resources" : {
        set of resources
     },
                                                     EC2やRDSなど、スタックを構成する
    "Outputs" : {                                           リソースを定義
      set of outputs
    }
}
Resourcesとは
     EC2やELB,RDSなど、起動するサービスを設定
     リソース毎に決められたパラメータを設定する

“Resources" : {
   “MyWebServer" : {
     “Type" : “AWS:EC2::Instance”
     “Properties" : {
        “KeyName" : "ami-8c1fece5“,
        “ImageId” : “myKey-east”
     },
     "us-west-1" : {
        "AMI" : "ami-3bc9997e“,
        “Key” : “myKey-west”
     },
     "ap-northeast-1" : {
        "AMI" : "ami-300ca731“,
        “Key” : “myKey-japan”
     }
   }
 },
EC2+SecurityGroupの例
"Resources" : {
   "Ec2Instance" : {                                  リソースタイプ
     "Type" : "AWS::EC2::Instance",
     "Properties" : {
       "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ],
       "KeyName" : { "Ref" : "KeyName" },
       "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}
     }
   },
   "InstanceSecurityGroup" : {                                      リソース毎のプロパティ
     "Type" : "AWS::EC2::SecurityGroup",
     "Properties" : {
       "GroupDescription" : "Enable SSH access via port 22",
       "SecurityGroupIngress" : [ {
         "IpProtocol" : "tcp",
         "FromPort" : "22",
         "ToPort" : "22",
         "CidrIp" : "0.0.0.0/0"
       }]
     }
   }
 }
リソースタイプ
Auto Scaling AutoScalingGroup         AWS::AutoScaling::AutoScalingGroup        Auto Scaling AutoScalingGroup         AWS::AutoScaling::AutoScalingGroup

IAM Access Key                        AWS::IAM::AccessKey                       Auto Scaling LaunchConfiguration      AWS::AutoScaling::LaunchConfiguration

IAM Group                             AWS::IAM::Group                           Auto Scaling Policy                   AWS::AutoScaling::ScalingPolicy

IAM Policy                            AWS::IAM::Policy                          Auto Scaling Trigger                  AWS::AutoScaling::Trigger

IAM Add User to Group                 UserToGroupAddition                       Amazon CloudFormation Stack           AWS::CloudFormation::Stack

IAM User                              AWS::IAM::User                            Amazon CloudFormation WaitCondition   AWS::CloudFormation::WaitCondition
                                                                                Amazon CloudFormation
Elastic Load Balancing LoadBalancer   AWS::ElasticLoadBalancing::LoadBalancer                                         AWS::CloudFormation::WaitConditionHandle
                                                                                WaitConditionHandle

Amazon RDS DBInstance                 AWS::RDS::DBInstance                      Amazon CloudFront Distribution        AWS::CloudFront::Distribution

Amazon RDS DBSecurityGroup            AWS::RDS::DBSecurityGroup                 Amazon CloudWatch                     AWS::CloudWatch::Alarm

Amazon Route 53 Resource Record Set   AWS::Route53::RecordSet                   Amazon EBS Volume                     AWS::EC2::Volume

Amazon Route 53 Resource Record Set                                             Amazon EBS Volume Attachment          AWS::EC2::VolumeAttachment
                                      AWS::Route53::RecordSetGroup
Group
                                                                                Amazon EC2 Elastic IP Address         AWS::EC2::EIP
Amazon S3 Bucket                      AWS::S3::Bucket
                                                                                Amazon EC2 Elastic IP Address
                                                                                                                      AWS::EC2::EIPAssociation
Amazon S3 Bucket Policy               AWS::S3::BucketPolicy                     Association
                                                                                Amazon EC2 Instance                   AWS::EC2::Instance
Amazon SimpleDB Domain                AWS::SDB::Domain
                                                                                Amazon EC2 Security Group             AWS::EC2::SecurityGroup
SNS Topic Policy                      AWS::SNS::TopicPolicy
                                                                                Amazon EC2 Security Group Ingress     AWS::EC2::SecurityGroupIngress
Amazon SNS Subscription               AWS::SNS::Subscription
                                                                                Amazon SQS Queue Policy               AWS::SQS::QueuePolicy
Amazon SNS Topic                      AWS::SNS::Topic
                                                                                Amazon SQS Queue                      AWS::SQS::Queue



    http://docs.amazonwebservices.com/AWSCloudFormation/latest/UserGuide/index.h
    tml?aws-template-resource-type-ref.html
Outputs
{
    "AWSTemplateFormatVersion" : “2010-09-09",

    "Description" : "Valid JSON strings up to 4K",

    "Parameters" : {
       set of parameters
    },

    "Mappings" : {
        set of mappings
     },

    "Resources" : {
        set of resources
     },

    "Outputs" : {
      set of outputs
    }
}                                                    スタック構築後に取得したい値
                                                      (例:アクセスURLなど)
Outputsとは

 スタック構築後に取得・表示したい情報の定義
 例えばアクセスURLや、DBの通信先情報、作ったIAMユーザ
 ー名など、あとで使用するもの
 マネジメントコンソールから確認できるので、スタックに関
 する情報を出力すると便利(キーペア名、AZ、インスタン
 スIDなど)
Outputの定義
                                     出力したい名称を定義
"Outputs" : {
"InstanceId" : {
     "Description" : "InstanceId of the newly created EC2 instance",                    説明
     "Value" : { "Ref" : "Ec2Instance" }
   },                                                     値
   "AZ" : {
     "Description" : "Availability Zone of the newly created EC2 instance",
     "Value" : { "Fn::GetAtt" : [ "Ec2Instance", "AvailabilityZone" ] }
   },
   "ApplicationURL" : {
     "Description" : "URL of running web application",
     "Value" :
         { "Fn::Join":
            ["", [ "http://", { "Fn::GetAtt": [ "Ec2Instance" , "PublicIp"] } , "/index.html"] ] }
   }
 }                                                   Functionを使って文字列を
                                                               加工
Outputの定義
"Outputs" : {
  "InstanceId" : {
     "Description" : "InstanceId of the newly created EC2 instance",
     "Value" : { "Ref" : "Ec2Instance" }
   },
   "AZ" : {
     "Description" : "Availability Zone of the newly created EC2 instance",
     "Value" : { "Fn::GetAtt" : [ "Ec2Instance", "AvailabilityZone" ] }
   },
   "ApplicationURL" : {
     "Description" : "URL of running web application",
     "Value" :
         { "Fn::Join":
            ["", [ "http://", { "Fn::GetAtt": [ "Ec2Instance" , "PublicIp"] } , "/index.html"] ] }
   }
 }
テンプレートのまとめ

Parameters,Mappings,Resources,Outputsの4つのブロッ
クに定義を記述
可変項目はパラメーター化したり、Mappingで定義
Functionsを使用して、参照や文字連結などの操作が可能
Resourceのパラメータはリソースタイプにより異なる。ド
キュメントを利用して定義
  http://docs.amazonwebservices.com/AWSCloudFormatio
   n/latest/UserGuide/index.html?aws-template-resource-
   type-ref.html
テンプレートTips
 リソース定義にEC2インスタンスが必須ではない
  DB構築だけ、オートスケールだけ、アラーム設定だけでもOK
 参照関係があると、依存関係があるとみなされる。相互参照
 や循環参照はNG(エラーとなる)
 参照関係がある部分は、参照の整合性が取れるよう起動順を
 CloudFormationが決定
 スタックを破棄すると、スタックにひもづくリソースは破棄
 される
  ただし”DeletionPolicy”を”Retain”にすると破棄されない
   "Resources" : {
      "myS3Bucket" : {
        "Type" : "AWS::S3::Bucket",
        "DeletionPolicy" : "Retain"
      }
    }
テンプレートTips

 リソース数が多いと、何のリソースか分からなくなるので、
 Tagsプロパティを使用する

 "MyInstance" : {
   "Type" : "AWS::EC2::Instance",
   "Properties" : {
      "SecurityGroups" : [ { "Ref" : "MySecurityGroup" } ],
      "ImageId" : "ami-20b65349",
     "Tags" : [
         { "Key" : “Name", "Value" : “MyInstance" }
     ]
   }
 }
テンプレートTips

 CloudFormationで作られたリソースには、スタック名など
 のタグが付与される
テンプレートTips

 テンプレートのコスト試算が可能
Cloud-init
Cloud-init

  AmazonLinuxに入っている、初期設定ツール
   元々はUbuntuで作られたもの
  EC2インスタンスの起動時に、「userdata」として設定した
  スクリプトを呼び出す。
   「#!」 で始まる文字列の場合のみ、スクリプトを実行
  スクリプトを記述できるので、ロケール変更、アプリインス
  トール、ファイル書き換えなどが可能
Cloud-init

                    EC2インスタンス起動




     User Dataに定義
                    Cloud-initがuserdataを
                           読み込む




                    読み込んだスクリプト
                        を実行
Cloud-initの利点と欠点
 利点
 インスタンス起動時に、インスタンスの初期化が可能
  AMIとユーザーデータは分離できるので、AMIの作り込みが不要
   になる
  Apacheインストール済みのAMIを用意すると、OSやApacheの
   バージョンが上がったときに再作成になる


 欠点
 userdataは一度定義すると、書き換えは不可能
  書き換えて再実行が出来ない(後述のスタック更新に使えない)
 設定できるデータ量は、16KByteまで
CloudFormationとの連携
 EC2リソースのプロパティ「UserData」に内容を記載
"MyInstance": {
   "Type": "AWS::EC2::Instance",
   "Properties": {
     "ImageId" : "ami-dcfa4edd",
     "KeyName"          : { "Ref" : "KeyName" },
     "UserData"       : { "Fn::Base64" : { "Fn::Join" : ["", [
        "#!/bin/bashn",
        "log='/tmp/init.log'n",
        "apt-get update &>> $logn",
        "apt-get install -y ruby &>> $logn",
        "cd /tmpn",
        "wget http://rubygems.org/rubygems.tgz &>> $logn",
        "tar zxf rubygems.tgz &>> $logn",
        "cd rubygemsn",
        "ruby setup.rb --no-format-executable &>> $logn",
        ]]
      }
    }
 }
CloudFormationとの連携
 CloudFormationでUserDataを定義すると、定義中にRefや
 Fn::GetAttrを使用することが可能
 例えばRDSのEndPointをUserDataに埋め込むといったこと
 が出来る
"Resources" : {
   "MyInstance": {
     "Type": "AWS::EC2::Instance",
      "Properties": {
       "ImageId" : "ami-dcfa4edd",
       "UserData"         : { "Fn::Base64" : { "Fn::Join" : ["", [
         "#!/bin/bashn",
         "cd /home/ec2-usern",
            { "Fn::Join" : ["", [
                  "echo ", {"Fn::GetAtt" : ["DBInstance", "Endpoint.Address"]} , "> db.confn"
              ]]}
        ]]}
       } } },
   "DBInstance" : {
     "Type": "AWS::RDS::DBInstance",
   }
 }
CloudFormation helpers
CloudFormation helpers

 EC2インスタンス初期化時のヘルパースクリプト群
 AmazonLinux正式版(2011.09)以降に搭載
 /opt/aws/bin に格納
     cfn-init
     cfn-get-metadata
     cfn-signal
     cfn-hup
 Python製
cfn-init
  パッケージやファイルのダウンロード、ファイルの生成を行
  うスクリプト
  実行のための設定は、Metadata領域に定義
    sources,packages,files,services
  "Resources": {
   "MyInstance": {
     "Type": "AWS::EC2::Instance",
     "Metadata" : {
        "AWS::CloudFormation::Init" : {
          "config" : {
                                          source,package,files,servicesの
            "sources" : { : },
            "packages" : { : }                   順に実行される
            "files" : { : }
            "services" : { : } }
         }
      },
      "Properties": { : }
    }
cfn-initの設定
 sources
   指定したURLからファイルをダウンロードして展開
   Tar,zip,tar+gzip,tar+bz2
  "sources" : {
    "/etc/myapp" : "https://s3.amazonaws.com/mybucket/myapp.tar.gz"
  }

 packages
   パッケージシステムを使用してアプリをインストール
   Apt,yum,rubygems,python,rpm
  "packages" : {             最新版
    "yum" : {
      "httpd" : [],
      "php" : [],
                             バージョン
    },
                               指定
    "rubygems" : {
      "chef" : [ "0.10.2" ],
    }
  }
cfn-initの設定
 files
   指定パスへのファイルの生成
   "files" : {                                         ファイルパス
        "/app/db.conf" : {
          "content" : { "Fn::Join" : ["", [
            "db.name=", {"Ref" : "DBName"}, "n",                  ファイルの中身
            "db.user=", {"Ref" : "DBUser"}, "n",                      を生成
            "db.pass=", {"Ref" : "DBPassword" },"n",
            "db.host=", {"Fn::GetAtt" : ["DBInstance", "Endpoint.Address"]}, "n",
          ]] },
          "mode" : "000644",
          "owner" : "root",
          "group" : "root"
        }                                                   S3などから取得
       "/etc/myapp/myapp-init.pp" : {
           "source" : "https://s3.amazonaws.com/myapp/myapp-init.pp",
           "mode" : "100644",
           "owner" : "root",
           "group" : "wheel"
       }
     }
cfn-initの設定
 services
   サービスの起動・再起動の指定
   現在sysvinitのみ
  "services" : {                         OS起動時に起動さ
   "sysvinit" : {                          せるかどうか
    "nginx" : {
      "enabled" : "true",
                                                    cfn-init終了後に起動するかどうか
      "ensureRunning" : "true",
      "files" : ["/etc/nginx/nginx.conf"],
      "sources" : ["/var/www/html"]
                                                    設定ファイルもしくは指定ディ
    },
    "php-fastcgi" : {
                                                    レクトリのファイルが変わって
      "enabled" : "true",                           いた場合にサービス再起動する
      "ensureRunning" : "true",
      "packages" : { "yum" : ["php", "spawn-fcgi"] }
    }
  }                                                  Cfg-initでパッケージを入れてい
                                              たらサービス再起動
cfn-initの起動

 cfn-initはデフォルトでは動作しない
 User-dataにcfn-initを起動するスクリプトを記述して、
 cloud-init経由で起動
 引数にスタック名、リソース名、リージョン、アクセスキー
 、シークレットキーを指定
  "Properties": {
    "UserData"         : { "Fn::Base64" : { "Fn::Join" : ["", [
          "#!/bin/bashn",
          "/opt/aws/bin/cfn-init -s ", { "Ref" : "AWS::StackName" }, " -r WebServer ",
          "      --access-key ", { "Ref" : "HostKeys" },
          "      --secret-key ", {"Fn::GetAtt": ["HostKeys", "SecretAccessKey"]},
          "      --region ", { "Ref" : "AWS::Region" }, "n",
      ]]}}
     }
初期化シーケンス

 EC2インスタンス起動
                    cfn-init内で、meta-dataの読み込み


  Init.dに登録してある
 cloud-initが実行される
                       Meta-dataの設定に従い、
                    Sources(ファイルダウンロード)
 User-data領域から、        Packages(インストール)
 スクリプトを読み込み                Files(設定作成)
                          Services(サービス)
                                 を実行
  スクリプト内で、
  cfn-initを呼び出し




     起動完了
https://s3.amazonaws.com/cloudformation-templates-
Chef(solo)との連携例      us-east-1/wordpress-via-chef-solo.template
                     が分かりやすい例

 EC2インスタンス起動

                      cfn-init内で、meta-dataの読み込み
  Init.dに登録してある
 cloud-initが実行される

                           Meta-dataの設定に従い、
 User-data領域から、
                    Sources(レシピファイルダウンロード)
 スクリプトを読み込み
                    Packages(rubygemでchefインストール)
                        Files(レシピの一部書き換え)
  スクリプト内で、                          を実行
  cfn-initを呼び出し


  スクリプト内で、
   Chefを実行            ダウンロードしたレシピを元に、
                          chefがサーバ構築

     起動完了
その他スクリプト
cfn-get-metadata
  Metadataを簡単に取得出来るスクリプト
cfn-signal
  リソース「WaitCondition」と共に使用
  cfn-signalを使用して、スタックに対して初期化状態の通知を
   することが出来る
  アプリのインストールが失敗した場合にスタックを破棄したり
   できる
cfn-hup
  スタックを更新(StackUpdateAPIを使用)した場合に、それ
   を感知して指定のファイルを実行するフックスクリプト

 https://s3.amazonaws.com/cloudformation-
 examples/BoostrappingApplicationsWithAWSCloudFormation.pdf
CloudFormer
CloudFormer
 既に構築済みのシステム構成から、テンプレートを作成する
 ツール
 テンプレート作成のベースとなるテンプレートを構築するの
 に利用可能
 ベータ版



                                 テンプレート


                   CloudFormer

    EC2      EC2

    AutoScaling
CloudFormer実行方法

 https://forums.aws.amazon.com/ann.jspa?annID=10
 48 でテンプレートを入手

 テンプレートからスタックを構築(リージョンは問わず)
 構築後、Outputsに表示されているURLにアクセス
CloudFormer実行方法

 テンプレート化したいリージョンを選ぶと、ウィザード形式
 でリソースの選択が可能
 チェックボックスを入れたリソースを元にテンプレートが完
 成
その他Tips
入れ子テンプレート

 テンプレートからテンプレートの呼び出しが可能
 リソースタイプに “AWS::CloudFormation::Stack“を指定
 TemplateURLを指定すると、そのテンプレートを読み込み

"Resources" : {
  "WebServer" : {
    "Type" : "AWS::CloudFormation::Stack",
   "Properties" : {
     "TemplateURL" : “https://s3.amazonaws.com/hoge.template" ]]},
     "Parameters" : {
       "KeyName" :       { "Ref" : "KeyName" },
       "InstanceType" : { "Ref" : "InstanceType"},
   }
 },
Baked AMI VS CF-Init
    AMIの作り込み VS Cloud-init+CloudFormation helpers
    用途によって、AMI作り込み、cloud-init、helperを使い分
    ける事が重要

                        利点                 欠点

AMI作り込み          ・構築が容易              ・ベースAMI/ミドルウェア
                 ・起動が速い               更新時に再インストールが必要
                  (オートスケールに有効)       ・リージョン毎の構築が必要


ベースAMI+          ・ベースAMI/ミドルウェア更新時   ・テンプレート構築が手間
Cloud-init+CFN    に追従が可能             ・OS初期化に時間がかかる
helpers          ・DBのエンドポイントなどの
                  定義が渡せる
IAM Capability
 CloudFormationでIAMユーザーを作成する場合、ウィザー
 ド途中でチェックボックスをonにする必要がある
   cfn-create-stackおよびcfn-update-stackの場合は、
      「--capalilities CAPABILITY_IAM」をコマンドに付与
まとめ
まとめ
CloudFormationを使用すると、システム構成をテンプレー
ト化できる
AmazonLinuxにはOS初期化のための仕組みが用意されてい
る
cloud-initとcfnヘルパー、またchefなどをCloudFormation
と組み合わせると、アプリケーションのセットアップも柔軟
に可能
システム構築の発想を変えてみる
  OSは素材
  テンプレート化で、よりクラウドの特性を生かしたシステム構
   築が可能に!
CloudFormationで
真のクラウドマイスターを目指せ!



          App      Web
         Server   Server
参考URL
Cloud Formation Samples
  http://aws.amazon.com/jp/cloudformation/aws-
   cloudformation-templates/
BootstrappingApplicationsWithAWSCloudFormation
  https://s3.amazonaws.com/cloudformation-
   examples/BoostrappingApplicationsWithAWSCloudForma
   tion.pdf
Integrating CloudFormation with Chef
  https://s3.amazonaws.com/cloudformation-
   examples/IntegratingAWSCloudFormationWithOpscodeC
   hef.pdf
CloudFormer
  https://forums.aws.amazon.com/ann.jspa?annID=1048

Contenu connexe

Tendances

[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NETAmazon Web Services Japan
 
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回SORACOM, INC
 
実践 Amazon KMS #cmdevio2015
実践 Amazon KMS #cmdevio2015実践 Amazon KMS #cmdevio2015
実践 Amazon KMS #cmdevio2015y torazuka
 
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-publicAmazon Web Services Japan
 
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch LogsAWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch LogsAmazon Web Services Japan
 
AWS Black Belt Techシリーズ AWS Storage Gateway
AWS Black Belt Techシリーズ  AWS Storage GatewayAWS Black Belt Techシリーズ  AWS Storage Gateway
AWS Black Belt Techシリーズ AWS Storage GatewayAmazon Web Services Japan
 
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNS
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNSAWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNS
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNSAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2016 Amazon Kinesis
AWS Black Belt Online Seminar 2016 Amazon KinesisAWS Black Belt Online Seminar 2016 Amazon Kinesis
AWS Black Belt Online Seminar 2016 Amazon KinesisAmazon Web Services Japan
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうGenta Watanabe
 
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB Amazon Web Services Japan
 
CloudWatch Logsについて
CloudWatch LogsについてCloudWatch Logsについて
CloudWatch LogsについてSugawara Genki
 
AWS基本機能入門セミナー資料 20201019
AWS基本機能入門セミナー資料 20201019AWS基本機能入門セミナー資料 20201019
AWS基本機能入門セミナー資料 20201019地球人
 
AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3Amazon Web Services Japan
 
S3 -ほぼ週刊AWSマイスターシリーズ第2回-
S3 -ほぼ週刊AWSマイスターシリーズ第2回-S3 -ほぼ週刊AWSマイスターシリーズ第2回-
S3 -ほぼ週刊AWSマイスターシリーズ第2回-SORACOM, INC
 
Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用真司 藤本
 
AWS Lambda with Java/Scala #渋谷Java 第十二回
AWS Lambda with Java/Scala #渋谷Java 第十二回AWS Lambda with Java/Scala #渋谷Java 第十二回
AWS Lambda with Java/Scala #渋谷Java 第十二回hajime ni
 

Tendances (20)

[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET
 
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
 
実践 Amazon KMS #cmdevio2015
実践 Amazon KMS #cmdevio2015実践 Amazon KMS #cmdevio2015
実践 Amazon KMS #cmdevio2015
 
Black Belt Online Seminar Amazon CloudWatch
Black Belt Online Seminar Amazon CloudWatchBlack Belt Online Seminar Amazon CloudWatch
Black Belt Online Seminar Amazon CloudWatch
 
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public
 
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch LogsAWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
 
AWS Blackbelt 2015シリーズ AWS Lambda
AWS Blackbelt 2015シリーズ AWS LambdaAWS Blackbelt 2015シリーズ AWS Lambda
AWS Blackbelt 2015シリーズ AWS Lambda
 
Amazon Glacierのご紹介(機能編)
Amazon Glacierのご紹介(機能編) Amazon Glacierのご紹介(機能編)
Amazon Glacierのご紹介(機能編)
 
AWS Black Belt Techシリーズ AWS Storage Gateway
AWS Black Belt Techシリーズ  AWS Storage GatewayAWS Black Belt Techシリーズ  AWS Storage Gateway
AWS Black Belt Techシリーズ AWS Storage Gateway
 
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNS
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNSAWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNS
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNS
 
AWS Black Belt Online Seminar 2016 Amazon Kinesis
AWS Black Belt Online Seminar 2016 Amazon KinesisAWS Black Belt Online Seminar 2016 Amazon Kinesis
AWS Black Belt Online Seminar 2016 Amazon Kinesis
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
 
AWS Black Belt Techシリーズ AWS IAM
AWS Black Belt Techシリーズ  AWS IAMAWS Black Belt Techシリーズ  AWS IAM
AWS Black Belt Techシリーズ AWS IAM
 
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
 
CloudWatch Logsについて
CloudWatch LogsについてCloudWatch Logsについて
CloudWatch Logsについて
 
AWS基本機能入門セミナー資料 20201019
AWS基本機能入門セミナー資料 20201019AWS基本機能入門セミナー資料 20201019
AWS基本機能入門セミナー資料 20201019
 
AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3
 
S3 -ほぼ週刊AWSマイスターシリーズ第2回-
S3 -ほぼ週刊AWSマイスターシリーズ第2回-S3 -ほぼ週刊AWSマイスターシリーズ第2回-
S3 -ほぼ週刊AWSマイスターシリーズ第2回-
 
Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用
 
AWS Lambda with Java/Scala #渋谷Java 第十二回
AWS Lambda with Java/Scala #渋谷Java 第十二回AWS Lambda with Java/Scala #渋谷Java 第十二回
AWS Lambda with Java/Scala #渋谷Java 第十二回
 

En vedette

[よくわかるAmazon Redshift]Amazon Redshift最新情報と導入事例のご紹介
[よくわかるAmazon Redshift]Amazon Redshift最新情報と導入事例のご紹介[よくわかるAmazon Redshift]Amazon Redshift最新情報と導入事例のご紹介
[よくわかるAmazon Redshift]Amazon Redshift最新情報と導入事例のご紹介Amazon Web Services Japan
 
20120723 aws meister-reloaded-awssd-kfor_ruby-php-python-public
20120723 aws meister-reloaded-awssd-kfor_ruby-php-python-public20120723 aws meister-reloaded-awssd-kfor_ruby-php-python-public
20120723 aws meister-reloaded-awssd-kfor_ruby-php-python-publicAmazon Web Services Japan
 
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編Amazon Web Services Japan
 
20120611 aws meister-reloaded-cloud-front-public
20120611 aws meister-reloaded-cloud-front-public20120611 aws meister-reloaded-cloud-front-public
20120611 aws meister-reloaded-cloud-front-publicAmazon Web Services Japan
 

En vedette (7)

Microsoft Share Point on AWS
Microsoft Share Point on AWSMicrosoft Share Point on AWS
Microsoft Share Point on AWS
 
[よくわかるAmazon Redshift]Amazon Redshift最新情報と導入事例のご紹介
[よくわかるAmazon Redshift]Amazon Redshift最新情報と導入事例のご紹介[よくわかるAmazon Redshift]Amazon Redshift最新情報と導入事例のご紹介
[よくわかるAmazon Redshift]Amazon Redshift最新情報と導入事例のご紹介
 
20120723 aws meister-reloaded-awssd-kfor_ruby-php-python-public
20120723 aws meister-reloaded-awssd-kfor_ruby-php-python-public20120723 aws meister-reloaded-awssd-kfor_ruby-php-python-public
20120723 aws meister-reloaded-awssd-kfor_ruby-php-python-public
 
20120303 jaws summit-meister-08_sg-dx
20120303 jaws summit-meister-08_sg-dx20120303 jaws summit-meister-08_sg-dx
20120303 jaws summit-meister-08_sg-dx
 
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
[AWS Summit 2012] クラウドデザインパターン#1 CDP概要編
 
20120611 aws meister-reloaded-cloud-front-public
20120611 aws meister-reloaded-cloud-front-public20120611 aws meister-reloaded-cloud-front-public
20120611 aws meister-reloaded-cloud-front-public
 
20111215 12 aws-meister-sqs_sns_sdb-public
20111215 12 aws-meister-sqs_sns_sdb-public20111215 12 aws-meister-sqs_sns_sdb-public
20111215 12 aws-meister-sqs_sns_sdb-public
 

Similaire à 20120402 aws meister-reloaded-cloud-formation

Aws meister-cloud formation-summit2012
Aws meister-cloud formation-summit2012Aws meister-cloud formation-summit2012
Aws meister-cloud formation-summit2012Akio Katayama
 
AWS Black Belt Techシリーズ AWS CloudFormation
AWS Black Belt Techシリーズ  AWS CloudFormationAWS Black Belt Techシリーズ  AWS CloudFormation
AWS Black Belt Techシリーズ AWS CloudFormationAmazon Web Services Japan
 
現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い真吾 吉田
 
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3Yasuhiro Araki, Ph.D
 
Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊Toru Makabe
 
当社のawsへの取組
当社のawsへの取組当社のawsへの取組
当社のawsへの取組Mercari Inc.
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAmazon Web Services Japan
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Yasuhiro Horiuchi
 
Jaws−横浜ハンズオンーCloudFormation w/ VPC 3/3
Jaws−横浜ハンズオンーCloudFormation w/ VPC 3/3Jaws−横浜ハンズオンーCloudFormation w/ VPC 3/3
Jaws−横浜ハンズオンーCloudFormation w/ VPC 3/3Yasuhiro Araki, Ph.D
 
サーバーレス開発の強い味方 AWS Systems Manager
サーバーレス開発の強い味方 AWS Systems Managerサーバーレス開発の強い味方 AWS Systems Manager
サーバーレス開発の強い味方 AWS Systems Manager桂一 中山
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShellAmazon Web Services Japan
 
AWS Black Belt Tech シリーズ 2015 AWS CLI & AWS Tools for Windows Powershell
AWS Black Belt Tech シリーズ 2015 AWS CLI & AWS Tools for Windows PowershellAWS Black Belt Tech シリーズ 2015 AWS CLI & AWS Tools for Windows Powershell
AWS Black Belt Tech シリーズ 2015 AWS CLI & AWS Tools for Windows PowershellAmazon Web Services Japan
 
リソーステンプレート入門
リソーステンプレート入門リソーステンプレート入門
リソーステンプレート入門junichi anno
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまでやりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまでDaisuke Masubuchi
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_publicTomoaki Sakatoku
 
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model  20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model Amazon Web Services Japan
 

Similaire à 20120402 aws meister-reloaded-cloud-formation (20)

Aws meister-cloud formation-summit2012
Aws meister-cloud formation-summit2012Aws meister-cloud formation-summit2012
Aws meister-cloud formation-summit2012
 
AWS Black Belt Techシリーズ AWS CloudFormation
AWS Black Belt Techシリーズ  AWS CloudFormationAWS Black Belt Techシリーズ  AWS CloudFormation
AWS Black Belt Techシリーズ AWS CloudFormation
 
現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い
 
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3
Jaws−横浜ハンズオンーCloudFormation w/ vpc 2/3
 
Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊
 
当社のawsへの取組
当社のawsへの取組当社のawsへの取組
当社のawsへの取組
 
OpenStack API
OpenStack APIOpenStack API
OpenStack API
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
Jaws−横浜ハンズオンーCloudFormation w/ VPC 3/3
Jaws−横浜ハンズオンーCloudFormation w/ VPC 3/3Jaws−横浜ハンズオンーCloudFormation w/ VPC 3/3
Jaws−横浜ハンズオンーCloudFormation w/ VPC 3/3
 
サーバーレス開発の強い味方 AWS Systems Manager
サーバーレス開発の強い味方 AWS Systems Managerサーバーレス開発の強い味方 AWS Systems Manager
サーバーレス開発の強い味方 AWS Systems Manager
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
 
AWS Black Belt Tech シリーズ 2015 AWS CLI & AWS Tools for Windows Powershell
AWS Black Belt Tech シリーズ 2015 AWS CLI & AWS Tools for Windows PowershellAWS Black Belt Tech シリーズ 2015 AWS CLI & AWS Tools for Windows Powershell
AWS Black Belt Tech シリーズ 2015 AWS CLI & AWS Tools for Windows Powershell
 
リソーステンプレート入門
リソーステンプレート入門リソーステンプレート入門
リソーステンプレート入門
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
IgChart 入門編
IgChart 入門編IgChart 入門編
IgChart 入門編
 
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまでやりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_public
 
AWS Tools for Windows PowerShell
AWS Tools for Windows PowerShellAWS Tools for Windows PowerShell
AWS Tools for Windows PowerShell
 
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model  20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
 

Plus de Amazon Web Services Japan

202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)Amazon Web Services Japan
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFSAmazon Web Services Japan
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device DefenderAmazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現Amazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...Amazon Web Services Japan
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Web Services Japan
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したことAmazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用Amazon Web Services Japan
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdfAmazon Web Services Japan
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介Amazon Web Services Japan
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon Web Services Japan
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチAmazon Web Services Japan
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer ProfilesAmazon Web Services Japan
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨Amazon Web Services Japan
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介Amazon Web Services Japan
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介Amazon Web Services Japan
 

Plus de Amazon Web Services Japan (20)

202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
 

Dernier

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Dernier (9)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

20120402 aws meister-reloaded-cloud-formation

  • 1. AWSマイスターシリーズ Reloaded ~AWS CloudFormation~ 2012年04月02日 片山 暁雄( @c9katayama ) ソリューションアーキテクト akiok@amazon.co.jp
  • 2. Agenda CloudFormationの概要 スタック テンプレート Cloud-init CloudFormation helpers CloudFormer その他Tips まとめ Copyright © 2011 Amazon Web Services
  • 4. CloudFormation EC2やELBなどを使ったAWSサービスのシステム構築を、設 定ファイル(テンプレート)を元に行えるサービス テンプレートを自由に作成できるため、自分好みのシステム 構成が可能 テンプレートは、AWSのサービスを操るための新しい言語
  • 5. CloudFormationのイメージ テンプレートに基づき 各サービスが起動 スタック ElasticLoadBalanceing テンプレート S3 Cloud Formation SNS EC2 EC2 AutoScaling CloudWatch
  • 6. 利用シーンと利点 一度テンプレートを作成すれば、同じ構成を再現できる  開発環境の構築  Blogシステム、Webシステム、ゲームプラットフォームなど、 同じ仕組みでアプリやデータが異なるようなもの ベストプラクティスが盛り込まれたテンプレートが使用可能  システムアーキテクチャの再利用  WordPress,Redmineなどが入った、多くのサンプルテンプレ ートが提供済み 起動時にパラメータを渡せる  例えばDBのエンドポイントをEC2に渡せる
  • 10. スタック可能なリソース これらをスタックに組み込み、設定を行える Amazon EC2 Instances Amazon Simple Storage Service (S3) Buckets Amazon Elastic Block Store (EBS) Volumes Amazon Simple DB Domains Elastic Load Balancers Amazon Simple Queue Service (SQS) Queues Elastic IP Addresses Amazon Simple Notification Service (SNS) Topics Amazon EC2 Security Groups Amazon SNS Subscriptions Auto Scaling Groups Amazon Route 53 DNS Records Amazon Relational Database Service (RDS) Amazon CloudFront Distributions Instances AWS Identity and Access Management users and Amazon RDS Security Groups groups AWS Elastic Beanstalk AWS Identify and Access Management policies Amazon CloudWatch Alarms New!! Amazon Virtual Private Cloud New!! Amazon ElastiCache
  • 11. スタック構築方法 AWS ManagementConsoleから構築 コマンドラインツール  http://aws.amazon.com/developertools/AWS- CloudFormation/2555753788650372 Java・.Net・PHPの各種SDK  Java : http://aws.amazon.com/jp/sdkforjava/  .NET : http://aws.amazon.com/jp/sdkfornet/  PHP : http://aws.amazon.com/jp/sdkforphp/
  • 12. AWS ManagementConsoleから構築-1 スタックの名称 ・サンプルテンプレート ・ローカルファイルの いずれか テンプレート ・テンプレートファイルURL (同一リージョンのS3上)
  • 13. AWS ManagementConsoleから構築-2 各種パラメータの入力 (後で説明)
  • 14. AWS ManagementConsoleから構築-3 スタック構築開始
  • 15. AWS ManagementConsoleから構築-4 スタック構築実行中
  • 16. AWS ManagementConsoleから構築-5 スタック構築完了 この時点ですべてのサービスが 起動している
  • 18. { "AWSTemplateFormatVersion" : "2010-09-09", テンプレート "Description" : “Sample", "Parameters" : { "KeyName" : { "Description" : “Sample key, "Type" : "String" } }, "Mappings" : { }, "Resources" : { CloudFormationの心臓部 "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { スタック構築の設計図 "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "KeyName" : { "Ref" : "KeyName" }, JSONフォーマットで記述 "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]} } }, "InstanceSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable SSH access via port 22", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "0.0.0.0/0" }] } } } }
  • 19. テンプレート解説 テンプレートのバージョン { (最新は2010-09-09) "AWSTemplateFormatVersion" : “2010-09-09", "Description" : "Valid JSON strings up to 4K", テンプレートの詳細(説明文) "Parameters" : { set of parameters CloudFormation実行時に }, 後で変更可能なパラメータを列挙 (例:DBユーザー名など) "Mappings" : { set of mappings }, Hashtableのようなもの キーに応じて値を特定出来る "Resources" : { (例:リージョンに応じたAMI番号など) set of resources }, EC2やRDSなど、スタックを構成する "Outputs" : { リソースを定義 set of outputs } } スタック構築後に取得したい値 (例:アクセスURLなど)
  • 20. Parameters { "AWSTemplateFormatVersion" : “2010-09-09", "Description" : "Valid JSON strings up to 4K", "Parameters" : { set of parameters CloudFormation実行時に }, 後で変更可能なパラメータを列挙 (例:DBユーザー名など) "Mappings" : { set of mappings }, "Resources" : { set of resources }, "Outputs" : { set of outputs } }
  • 21. Parametersとは スタック構築時に値の入力が可能 データ型、デフォルト値、最小最大値など設定可能 "Parameters" : { "Age":{ "Type":"Number", “Default” : “30”, “MinValue”: “20”, “MaxValue”: “60”, "Description":"input your age.“ }, "FirstName":{ "Type":"String", "Description":"input your first name.“ }, }
  • 22. Parametersのプロパティ 利用出来るプロパティ プロパティ 内容 Type データ型 “String” “Number” “CommaDelimitedList” Default デフォルト値 NoEcho 入力時に*****となる(パスワードなどに使用) AllowedValues 入力可能値の一覧指定 (例:[“true”,”false”] ) AllowedPattern 正規表現で入力可能パターンを指定(例:[a-zA-Z]*) MaxLength 最大文字数 MaxValue 最大値 MinValue 最小値 Description プロパティの詳細説明 ConstraintDescription 入力した値がAllowedPatternやMaxLengthなどの制約 に引っかかった時に表示する説明 (どのような制約があるかの説明を記述)
  • 23. Parametersの参照 入力したパラメータ値は、テンプレート中で “Ref”を使用し て参照可能 ユーザー名、パスワード、ドメインなどの可変部分に便利 ここにパラメータ入力値が反映される “Resources" : { “MyServer":{ “Type":“AWS::EC2::Instance", “Properties” : { “KeyName”: { “Ref” : “Age”}, “Tags” : { “Ref” : “FirstName”} } } }
  • 24. Function Ref  パラメータを参照する Fn::Base64  文字列をBase64エンコードする Fn::FindInMap  Mapから値を取り出す Fn::GetAtt  リソースから属性を取り出す  例:"Fn::GetAtt" : [ "MyELB" , "DNSName"] Fn:GetAZs  指定リージョンのアベイラビリティゾーンを返す Fn:Join  文字列の連結  “Fn::Join” : [ “:”, [ “a”, “b”, “c” ] ] は 「a:b:c」を返す  “:”がセパレータ。不要な場合は ”” を定義 http://docs.amazonwebservices.com/AWSCloudFormation/latest/UserGuide/index. html?intrinsic-function-reference.html
  • 25. Pseudo Parameter 実行リージョンやスタック名といったパラメータを取得出来る予約語 AWS::Region  スタック構築対象のリージョンを取得する  { “Ref” : “AWS::Region” } で値を取得可能 AWS::StackName  スタックの名前を取得する  { “Ref” : “AWS::StackName” } で値を取得可能 “Resources" : { “MyServer":{ “Type":“AWS::EC2::Instance", “Properties” : { “KeyName”: { “Ref” : “AWS::StackName”}, “Tags” : { “Ref” : “AWS::Region”} } } } http://docs.amazonwebservices.com/AWSCloudFormation/latest/UserGuide/index. html?pseudo-parameter-reference.html
  • 26. Mappings { "AWSTemplateFormatVersion" : “2010-09-09", "Description" : "Valid JSON strings up to 4K", "Parameters" : { set of parameters }, "Mappings" : { set of mappings }, Hashtableのようなもの キーに応じて値を特定出来る "Resources" : { (例:リージョンに応じたAMI番号など) set of resources }, "Outputs" : { set of outputs } }
  • 27. Mappingsとは キーとバリューのテーブル 例えば、入力値やリージョンによって値が変わるようなもの を決めるような使い方 "Mappings" : { "RegionTable" : { "us-east-1" : { マッピングを定義 "AMI" : "ami-8c1fece5“, (この例の場合、”RegionTable”という “Key” : “myKey-east” マッピングを定義) }, "us-west-1" : { "AMI" : "ami-3bc9997e“, “Fn::FindInTemplate” “Key” : “myKey-west” }, "ap-northeast-1" : { "AMI" : "ami-300ca731“, “Key” : “myKey-japan” } } },
  • 28. Mappingsの使い方 “Fn:FindInMap”で値を取得 "Fn::FindInMap" : [ "MapName", "Key", "Value"] MapName,key,Valueには”Ref”が利用可能 "Mappings" : { "RegionTable" : { "us-east-1" : { “Resources" : { "AMI" : "ami-8c1fece5“, “MyServer":{ “Key” : “myKey-east” “Type":“AWS::EC2::Instance", }, “Properties” : { "us-west-1" : { “ImageId”: { “Fn::FindInTemplate” "AMI" : "ami-3bc9997e“, “Fn:FindInMap” : [ “Key” : “myKey-west” “RegionTable” , }, { “Ref” : “region” }, "ap-northeast-1" : { “AMI”] "AMI" : "ami-300ca731“, }, “Key” : “myKey-japan” } } } } } この例だと、入力された }, regionパラメータによって 利用するAMIのIDを決定できる
  • 29. Resources { "AWSTemplateFormatVersion" : “2010-09-09", "Description" : "Valid JSON strings up to 4K", "Parameters" : { set of parameters }, "Mappings" : { set of mappings }, "Resources" : { set of resources }, EC2やRDSなど、スタックを構成する "Outputs" : { リソースを定義 set of outputs } }
  • 30. Resourcesとは EC2やELB,RDSなど、起動するサービスを設定 リソース毎に決められたパラメータを設定する “Resources" : { “MyWebServer" : { “Type" : “AWS:EC2::Instance” “Properties" : { “KeyName" : "ami-8c1fece5“, “ImageId” : “myKey-east” }, "us-west-1" : { "AMI" : "ami-3bc9997e“, “Key” : “myKey-west” }, "ap-northeast-1" : { "AMI" : "ami-300ca731“, “Key” : “myKey-japan” } } },
  • 31. EC2+SecurityGroupの例 "Resources" : { "Ec2Instance" : { リソースタイプ "Type" : "AWS::EC2::Instance", "Properties" : { "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "KeyName" : { "Ref" : "KeyName" }, "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]} } }, "InstanceSecurityGroup" : { リソース毎のプロパティ "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable SSH access via port 22", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "0.0.0.0/0" }] } } }
  • 32. リソースタイプ Auto Scaling AutoScalingGroup AWS::AutoScaling::AutoScalingGroup Auto Scaling AutoScalingGroup AWS::AutoScaling::AutoScalingGroup IAM Access Key AWS::IAM::AccessKey Auto Scaling LaunchConfiguration AWS::AutoScaling::LaunchConfiguration IAM Group AWS::IAM::Group Auto Scaling Policy AWS::AutoScaling::ScalingPolicy IAM Policy AWS::IAM::Policy Auto Scaling Trigger AWS::AutoScaling::Trigger IAM Add User to Group UserToGroupAddition Amazon CloudFormation Stack AWS::CloudFormation::Stack IAM User AWS::IAM::User Amazon CloudFormation WaitCondition AWS::CloudFormation::WaitCondition Amazon CloudFormation Elastic Load Balancing LoadBalancer AWS::ElasticLoadBalancing::LoadBalancer AWS::CloudFormation::WaitConditionHandle WaitConditionHandle Amazon RDS DBInstance AWS::RDS::DBInstance Amazon CloudFront Distribution AWS::CloudFront::Distribution Amazon RDS DBSecurityGroup AWS::RDS::DBSecurityGroup Amazon CloudWatch AWS::CloudWatch::Alarm Amazon Route 53 Resource Record Set AWS::Route53::RecordSet Amazon EBS Volume AWS::EC2::Volume Amazon Route 53 Resource Record Set Amazon EBS Volume Attachment AWS::EC2::VolumeAttachment AWS::Route53::RecordSetGroup Group Amazon EC2 Elastic IP Address AWS::EC2::EIP Amazon S3 Bucket AWS::S3::Bucket Amazon EC2 Elastic IP Address AWS::EC2::EIPAssociation Amazon S3 Bucket Policy AWS::S3::BucketPolicy Association Amazon EC2 Instance AWS::EC2::Instance Amazon SimpleDB Domain AWS::SDB::Domain Amazon EC2 Security Group AWS::EC2::SecurityGroup SNS Topic Policy AWS::SNS::TopicPolicy Amazon EC2 Security Group Ingress AWS::EC2::SecurityGroupIngress Amazon SNS Subscription AWS::SNS::Subscription Amazon SQS Queue Policy AWS::SQS::QueuePolicy Amazon SNS Topic AWS::SNS::Topic Amazon SQS Queue AWS::SQS::Queue http://docs.amazonwebservices.com/AWSCloudFormation/latest/UserGuide/index.h tml?aws-template-resource-type-ref.html
  • 33. Outputs { "AWSTemplateFormatVersion" : “2010-09-09", "Description" : "Valid JSON strings up to 4K", "Parameters" : { set of parameters }, "Mappings" : { set of mappings }, "Resources" : { set of resources }, "Outputs" : { set of outputs } } スタック構築後に取得したい値 (例:アクセスURLなど)
  • 34. Outputsとは スタック構築後に取得・表示したい情報の定義 例えばアクセスURLや、DBの通信先情報、作ったIAMユーザ ー名など、あとで使用するもの マネジメントコンソールから確認できるので、スタックに関 する情報を出力すると便利(キーペア名、AZ、インスタン スIDなど)
  • 35. Outputの定義 出力したい名称を定義 "Outputs" : { "InstanceId" : { "Description" : "InstanceId of the newly created EC2 instance", 説明 "Value" : { "Ref" : "Ec2Instance" } }, 値 "AZ" : { "Description" : "Availability Zone of the newly created EC2 instance", "Value" : { "Fn::GetAtt" : [ "Ec2Instance", "AvailabilityZone" ] } }, "ApplicationURL" : { "Description" : "URL of running web application", "Value" : { "Fn::Join": ["", [ "http://", { "Fn::GetAtt": [ "Ec2Instance" , "PublicIp"] } , "/index.html"] ] } } } Functionを使って文字列を 加工
  • 36. Outputの定義 "Outputs" : { "InstanceId" : { "Description" : "InstanceId of the newly created EC2 instance", "Value" : { "Ref" : "Ec2Instance" } }, "AZ" : { "Description" : "Availability Zone of the newly created EC2 instance", "Value" : { "Fn::GetAtt" : [ "Ec2Instance", "AvailabilityZone" ] } }, "ApplicationURL" : { "Description" : "URL of running web application", "Value" : { "Fn::Join": ["", [ "http://", { "Fn::GetAtt": [ "Ec2Instance" , "PublicIp"] } , "/index.html"] ] } } }
  • 38. テンプレートTips リソース定義にEC2インスタンスが必須ではない  DB構築だけ、オートスケールだけ、アラーム設定だけでもOK 参照関係があると、依存関係があるとみなされる。相互参照 や循環参照はNG(エラーとなる) 参照関係がある部分は、参照の整合性が取れるよう起動順を CloudFormationが決定 スタックを破棄すると、スタックにひもづくリソースは破棄 される  ただし”DeletionPolicy”を”Retain”にすると破棄されない "Resources" : { "myS3Bucket" : { "Type" : "AWS::S3::Bucket", "DeletionPolicy" : "Retain" } }
  • 39. テンプレートTips リソース数が多いと、何のリソースか分からなくなるので、 Tagsプロパティを使用する "MyInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "SecurityGroups" : [ { "Ref" : "MySecurityGroup" } ], "ImageId" : "ami-20b65349", "Tags" : [ { "Key" : “Name", "Value" : “MyInstance" } ] } }
  • 43. Cloud-init AmazonLinuxに入っている、初期設定ツール  元々はUbuntuで作られたもの EC2インスタンスの起動時に、「userdata」として設定した スクリプトを呼び出す。  「#!」 で始まる文字列の場合のみ、スクリプトを実行 スクリプトを記述できるので、ロケール変更、アプリインス トール、ファイル書き換えなどが可能
  • 44. Cloud-init EC2インスタンス起動 User Dataに定義 Cloud-initがuserdataを 読み込む 読み込んだスクリプト を実行
  • 45. Cloud-initの利点と欠点 利点 インスタンス起動時に、インスタンスの初期化が可能  AMIとユーザーデータは分離できるので、AMIの作り込みが不要 になる  Apacheインストール済みのAMIを用意すると、OSやApacheの バージョンが上がったときに再作成になる 欠点 userdataは一度定義すると、書き換えは不可能  書き換えて再実行が出来ない(後述のスタック更新に使えない) 設定できるデータ量は、16KByteまで
  • 46. CloudFormationとの連携 EC2リソースのプロパティ「UserData」に内容を記載 "MyInstance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId" : "ami-dcfa4edd", "KeyName" : { "Ref" : "KeyName" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bashn", "log='/tmp/init.log'n", "apt-get update &>> $logn", "apt-get install -y ruby &>> $logn", "cd /tmpn", "wget http://rubygems.org/rubygems.tgz &>> $logn", "tar zxf rubygems.tgz &>> $logn", "cd rubygemsn", "ruby setup.rb --no-format-executable &>> $logn", ]] } } }
  • 47. CloudFormationとの連携 CloudFormationでUserDataを定義すると、定義中にRefや Fn::GetAttrを使用することが可能 例えばRDSのEndPointをUserDataに埋め込むといったこと が出来る "Resources" : { "MyInstance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId" : "ami-dcfa4edd", "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bashn", "cd /home/ec2-usern", { "Fn::Join" : ["", [ "echo ", {"Fn::GetAtt" : ["DBInstance", "Endpoint.Address"]} , "> db.confn" ]]} ]]} } } }, "DBInstance" : { "Type": "AWS::RDS::DBInstance", } }
  • 49. CloudFormation helpers EC2インスタンス初期化時のヘルパースクリプト群 AmazonLinux正式版(2011.09)以降に搭載 /opt/aws/bin に格納  cfn-init  cfn-get-metadata  cfn-signal  cfn-hup Python製
  • 50. cfn-init パッケージやファイルのダウンロード、ファイルの生成を行 うスクリプト 実行のための設定は、Metadata領域に定義  sources,packages,files,services "Resources": { "MyInstance": { "Type": "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { source,package,files,servicesの "sources" : { : }, "packages" : { : } 順に実行される "files" : { : } "services" : { : } } } }, "Properties": { : } }
  • 51. cfn-initの設定 sources  指定したURLからファイルをダウンロードして展開  Tar,zip,tar+gzip,tar+bz2 "sources" : { "/etc/myapp" : "https://s3.amazonaws.com/mybucket/myapp.tar.gz" } packages  パッケージシステムを使用してアプリをインストール  Apt,yum,rubygems,python,rpm "packages" : { 最新版 "yum" : { "httpd" : [], "php" : [], バージョン }, 指定 "rubygems" : { "chef" : [ "0.10.2" ], } }
  • 52. cfn-initの設定 files  指定パスへのファイルの生成 "files" : { ファイルパス "/app/db.conf" : { "content" : { "Fn::Join" : ["", [ "db.name=", {"Ref" : "DBName"}, "n", ファイルの中身 "db.user=", {"Ref" : "DBUser"}, "n", を生成 "db.pass=", {"Ref" : "DBPassword" },"n", "db.host=", {"Fn::GetAtt" : ["DBInstance", "Endpoint.Address"]}, "n", ]] }, "mode" : "000644", "owner" : "root", "group" : "root" } S3などから取得 "/etc/myapp/myapp-init.pp" : { "source" : "https://s3.amazonaws.com/myapp/myapp-init.pp", "mode" : "100644", "owner" : "root", "group" : "wheel" } }
  • 53. cfn-initの設定 services  サービスの起動・再起動の指定  現在sysvinitのみ "services" : { OS起動時に起動さ "sysvinit" : { せるかどうか "nginx" : { "enabled" : "true", cfn-init終了後に起動するかどうか "ensureRunning" : "true", "files" : ["/etc/nginx/nginx.conf"], "sources" : ["/var/www/html"] 設定ファイルもしくは指定ディ }, "php-fastcgi" : { レクトリのファイルが変わって "enabled" : "true", いた場合にサービス再起動する "ensureRunning" : "true", "packages" : { "yum" : ["php", "spawn-fcgi"] } } } Cfg-initでパッケージを入れてい たらサービス再起動
  • 54. cfn-initの起動 cfn-initはデフォルトでは動作しない User-dataにcfn-initを起動するスクリプトを記述して、 cloud-init経由で起動 引数にスタック名、リソース名、リージョン、アクセスキー 、シークレットキーを指定 "Properties": { "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bashn", "/opt/aws/bin/cfn-init -s ", { "Ref" : "AWS::StackName" }, " -r WebServer ", " --access-key ", { "Ref" : "HostKeys" }, " --secret-key ", {"Fn::GetAtt": ["HostKeys", "SecretAccessKey"]}, " --region ", { "Ref" : "AWS::Region" }, "n", ]]}} }
  • 55. 初期化シーケンス EC2インスタンス起動 cfn-init内で、meta-dataの読み込み Init.dに登録してある cloud-initが実行される Meta-dataの設定に従い、 Sources(ファイルダウンロード) User-data領域から、 Packages(インストール) スクリプトを読み込み Files(設定作成) Services(サービス) を実行 スクリプト内で、 cfn-initを呼び出し 起動完了
  • 56. https://s3.amazonaws.com/cloudformation-templates- Chef(solo)との連携例 us-east-1/wordpress-via-chef-solo.template が分かりやすい例 EC2インスタンス起動 cfn-init内で、meta-dataの読み込み Init.dに登録してある cloud-initが実行される Meta-dataの設定に従い、 User-data領域から、 Sources(レシピファイルダウンロード) スクリプトを読み込み Packages(rubygemでchefインストール) Files(レシピの一部書き換え) スクリプト内で、 を実行 cfn-initを呼び出し スクリプト内で、 Chefを実行 ダウンロードしたレシピを元に、 chefがサーバ構築 起動完了
  • 57. その他スクリプト cfn-get-metadata  Metadataを簡単に取得出来るスクリプト cfn-signal  リソース「WaitCondition」と共に使用  cfn-signalを使用して、スタックに対して初期化状態の通知を することが出来る  アプリのインストールが失敗した場合にスタックを破棄したり できる cfn-hup  スタックを更新(StackUpdateAPIを使用)した場合に、それ を感知して指定のファイルを実行するフックスクリプト https://s3.amazonaws.com/cloudformation- examples/BoostrappingApplicationsWithAWSCloudFormation.pdf
  • 59. CloudFormer 既に構築済みのシステム構成から、テンプレートを作成する ツール テンプレート作成のベースとなるテンプレートを構築するの に利用可能 ベータ版 テンプレート CloudFormer EC2 EC2 AutoScaling
  • 60. CloudFormer実行方法 https://forums.aws.amazon.com/ann.jspa?annID=10 48 でテンプレートを入手 テンプレートからスタックを構築(リージョンは問わず) 構築後、Outputsに表示されているURLにアクセス
  • 63. 入れ子テンプレート テンプレートからテンプレートの呼び出しが可能 リソースタイプに “AWS::CloudFormation::Stack“を指定 TemplateURLを指定すると、そのテンプレートを読み込み "Resources" : { "WebServer" : { "Type" : "AWS::CloudFormation::Stack", "Properties" : { "TemplateURL" : “https://s3.amazonaws.com/hoge.template" ]]}, "Parameters" : { "KeyName" : { "Ref" : "KeyName" }, "InstanceType" : { "Ref" : "InstanceType"}, } },
  • 64. Baked AMI VS CF-Init AMIの作り込み VS Cloud-init+CloudFormation helpers 用途によって、AMI作り込み、cloud-init、helperを使い分 ける事が重要 利点 欠点 AMI作り込み ・構築が容易 ・ベースAMI/ミドルウェア ・起動が速い 更新時に再インストールが必要 (オートスケールに有効) ・リージョン毎の構築が必要 ベースAMI+ ・ベースAMI/ミドルウェア更新時 ・テンプレート構築が手間 Cloud-init+CFN に追従が可能 ・OS初期化に時間がかかる helpers ・DBのエンドポイントなどの 定義が渡せる
  • 65. IAM Capability CloudFormationでIAMユーザーを作成する場合、ウィザー ド途中でチェックボックスをonにする必要がある  cfn-create-stackおよびcfn-update-stackの場合は、 「--capalilities CAPABILITY_IAM」をコマンドに付与
  • 69. 参考URL Cloud Formation Samples  http://aws.amazon.com/jp/cloudformation/aws- cloudformation-templates/ BootstrappingApplicationsWithAWSCloudFormation  https://s3.amazonaws.com/cloudformation- examples/BoostrappingApplicationsWithAWSCloudForma tion.pdf Integrating CloudFormation with Chef  https://s3.amazonaws.com/cloudformation- examples/IntegratingAWSCloudFormationWithOpscodeC hef.pdf CloudFormer  https://forums.aws.amazon.com/ann.jspa?annID=1048