文章出處

亞馬遜的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
{
    "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的不可多得的好幫手。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()