亚马逊云服务之CloudFormation

亚马逊的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的不可多得的好帮手。

相关文章
相关标签/搜索