亞馬遜的Web Service其實包含了一套雲服務。雲服務主要分爲三種:數據庫
IaaS: Infrastructure as a service,基礎設施即服務。json
PaaS: Platform as a service, 平臺即服務。ssh
SaaS: Software as a service, 軟件即服務。工具
而亞馬遜提供的雲服務至少涵蓋了前面兩種。如下是亞馬遜提供的各類服務。網站
以上的圖中S三、EC2等就屬於IaaS,RDS、DynamoDB等就屬於PaaS。url
今天分享的是亞馬遜的CloudFormation,亞馬遜將其歸類爲Deployment&Management(部署及管理類別)。爲何亞馬遜要推出這項服務那?咱們能夠假設一個場景。若是你要將一個WordPress網站部署到亞馬遜上,你須要如下幾步:建立一個EC2實例->在此EC2實例上配置WordPress->建立RDS數據庫實例->在WordPress中配置與該RDS的鏈接。整個過程耗時耗力,須要在亞馬遜不一樣的雲服務間跳轉。這些操做關聯性很強,不具有自動化。若是你使用了CloudFormation之後,只須要在頁面上點幾個按鈕,輸入一些參數,就能夠建立一個博客,省時省力,甚至徹底不用任何UI,直接經過命令行完成。spa
CloudFormation給予了用戶一種簡單的方法來建立和管理一系列有關聯的AWS的資源,能夠有序的及可預見的初始化和更新這些資源。命令行
要了解CloudFomation以前,先要了解幾個概念。3d
Template - 模板
Template是CloudFormation的一個重要概念。Template本質上是一個json格式的文件。該文件定義了你須要使用那些AWS的資源,而且如何初始化這些資源。CloudFormation支持的資源以下圖所示。code
一個Template文件至少包含一下幾個屬性:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "AWSTemplateFormatVersion" : "2010-09-09", //Template版本 "Description" : "描述該Template的用途", "Parameters": { // 應用該Template須要配置的參數 }, "Resources" : { // 使用到的AWS的資源及它們之間的關係 }, "Outputs" : { // stack建立完畢後的一系列返回值 } } |
這個Template就是用來建立一個EC2的虛擬機。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.", "Outputs" : { "InstanceId" : { "Description" : "The InstanceId of the newly created EC2 instance", "Value" : { "Ref" : "Ec2Instance" } } }, "Parameters" : { "KeyPair" : { "Description" : "The EC2 Key Pair to allow SSH access to the instance", "Type" : "String" } }, "Resources" : { "Ec2Instance" : { "Properties" : { "ImageId" : "ami-3b355a52", "KeyName" : { "Ref" : "KeyPair" } }, "Type" : "AWS::EC2::Instance" } } } |
AWS官方提供了不少Template的資源,咱們能夠直接使用,固然也能夠按需修改,甚至本身手動編寫本身的Template。<http://aws.amazon.com/cloudformation/aws-cloudformation-templates/ >列出了一系列可供使用的Template。
Stack - 堆
Template只是一個json格式的文件,若是想要使用它的話,須要建立一個Stack,在Stack中指定你要使用的Template,而後亞馬遜纔會按照Template中的定義來建立及初始化資源。能夠在AWS Management Console中或經過命令行調用API的方式來建立Stack。
實戰
接下來,咱們就經過AWS Management Console,使用CloudFormation來建立一個部署在EC2上、使用RDS做爲數據庫的WordPress網站。
首先,須要登陸到AWS Management Console,選擇EC2服務,點擊左側菜單的Key Pair,建立一個Key Pair。這個Key Pair將在接下來被使用,主要使AWS可以ssh到建立的EC2機器上。固然你也可使用已有的Key Pair。
而後選擇CloudFormation服務,點擊Create Stack
按鈕。
而後輸入Stack名稱,並選擇一個Template。因爲咱們要建立一個WordPress的站點,能夠選擇use a sample temple
,並選擇WordPress這個模板。
而後點擊continue
按鈕,配置相關的參數。注意在KeyName一項中輸入咱們第一步建立的Key Pair。
而後點擊continue
按鈕,配置此Stack的標籤,這個是可選項,能夠跳過。再點一下continue
,將會再次確認想要的建立的資源信息,繼續後就能夠看到資源正在建立了。
頁面下半部分有不少標籤,你能夠隨時查看該Stack的描述、資源、事件、參數、輸出等各項信息。
等待大約20分鐘,Stack就會執行完畢,在Outputs標籤中你會看到有一個url。
這個就是咱們建立的WordPress的入口地址,訪問該連接會進入WordPress的初始化設置頁面。
配置完之後,一個新的WordPress就誕生了,從新訪問URL,你會看到你的博客首頁。
CloudFormer
提到CloudFormation就不得不說CloudFormer。CloudFormer是亞馬遜提供的一個工具,用來給已有的AWS資源建立CloudFormation Template。這樣你在之後建立相同的AWS資源時就能夠直接使用這個Template了。
要使用CloudFormer首先要建立一個Stack,CloudFormer就被部署到一臺EC2機器上,經過這個Stack返回的Outputs的URL咱們能夠一步步勾選使用到的資源,最終生成一個Template,該Template會自動放置到你的S3中。
首先建立Stack,Template選擇use a sample template,並選擇CloudFormer。
而後點擊continue
,配置其餘參數,直到走完建立Stack這個流程。
等待這個Stack建立完畢後,就能夠從Outputs標籤獲得一個URL。這個URL是執行CloudFormer工具的入口地址。
點擊此URL,便可按照配置一步步配置本身的Template。
流程走完後,生成的Template會存放到你的S3 bucket中。
因爲CloudFormation支持對幾乎全部的AWS資源進行建立和配置,而且可以按照指定順序建立,其Template簡潔易懂、容易配置、可重用,因此是你使用AWS的不可多得的好幫手。