亞馬遜的Web Service其實包含了一套雲服務。雲服務主要分為三種:
IaaS: Infrastructure as a service,基礎設施即服務。
PaaS: Platform as a service, 平臺即服務。
SaaS: Software as a service, 軟體即服務。
而亞馬遜提供的雲服務至少涵蓋了前面兩種。以下是亞馬遜提供的各種服務。
以上的圖中S3、EC2等就屬於IaaS,RDS、DynamoDB等就屬於PaaS。
今天分享的是亞馬遜的CloudFormation,亞馬遜將其歸類為Deployment&Management(部署及管理類別)。為什麼亞馬遜要推出這項服務那?我們可以假設一個場景。如果你要將一個WordPress網站部署到亞馬遜上,你需要以下幾步:建立一個EC2例項->在此EC2例項上配置WordPress->建立RDS資料庫例項->在WordPress中配置與該RDS的連線。整個過程耗時耗力,需要在亞馬遜不同的雲服務間跳轉。這些操作關聯性很強,不具備自動化。如果你使用了CloudFormation以後,只需要在頁面上點幾個按鈕,輸入一些引數,就可以建立一個部落格,省時省力,甚至完全不用任何UI,直接通過命令列完成。
CloudFormation給予了使用者一種簡單的方法來建立和管理一系列有關聯的AWS的資源,可以有序的及可預見的初始化和更新這些資源。
要了解CloudFomation之前,先要了解幾個概念。
Template - 模板
Template是CloudFormation的一個重要概念。Template本質上是一個json格式的檔案。該檔案定義了你需要使用那些AWS的資源,並且如何初始化這些資源。CloudFormation支援的資源如下圖所示。
一個Template檔案至少包含一下幾個屬性:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
這個Template就是用來建立一個EC2的虛擬機器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
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的不可多得的好幫手。