了解如何入门使用 AWS CloudFormation 最好的方法是仔细阅读技术文档中提供的 入门指南。短短几分钟内,您就可以设置其中一个样本模板,并开始创建自己的基础结构配置。
AWS CloudFormation 简介

CloudFormation 模板具有以下几个优势:

遵循熟悉的格式:CloudFormation 模板只是一个 JSON (Javascript 对象表示法) 或 YAML 格式文本文件,用于描述运行某个应用程序或服务所需的 AWS 基础设施以及它们之间的互联关系。

管理相互关系:模板能简要地获取资源间的相互关系,例如 EC2 实例必须与 Elastic Load Balancing 负载均衡器相关联,或者 EBS 卷必须与其连接的实例位于同一 EC2 可用区内。

反复使用:使用模板参数可使单个模板用于具有不同配置值的多个基础设施部署,例如要为该应用程序部署多少实例的模板。

获取帮助反馈:模板还提供输出属性,以便向用户返回部署结果或配置信息。例如,完成实例化后,模板可能向客户提供 Elastic Load Balancing 终端节点的 URL,用于连接最新实例化的应用程序。

避免冲突:模板中的所有 AWS 资源由逻辑名称进行标识,以便利用一个模板创建多个堆栈时 AWS 资源之间不会产生命名冲突。

即写即用:使用任何方法启动堆栈,无需提前 用 AWS CloudFormation 注册模板。

可视化您的堆栈:CloudFormation Designer 让您能够以图表形式显示模板。您可以轻松地查看 AWS 资源及其之间的关系并安排布局,使图表更符合您的意图。您可以借助拖放界面和集成的 JSON 编辑器编辑模板。您对图表所做的修改会自动反映到模板的 JSON 中。                                                                                                                                          

查询资源:AWS CloudFormation 保留堆栈模板的副本,以便您可以使用 AWS 管理控制台、命令行工具或 API 查询堆栈创建期间应用的确切资源配置。

自动化:您可以选择使用编程语言或所选工具自动生成模板。您还可以选择使用 CloudFormation API、AWS SDK 或 AWS CLI 从模板中自动创建堆栈。

模板具有以下高级别 JSON 结构:

{

    "Description" : "A text description for the template usage",

    "Parameters": {

        // A set of inputs used to customize the template per deployment

    },

    "Resources" : {

        // The set of AWS resources and relationships between them

    },

    "Outputs" : {

        // A set of values to be made visible to the stack creator

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}

下列模板是说明如何创建 EC2 实例的一个简单示例:

{

    "Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.",

    "Parameters" : {

        "KeyPair" : {

            "Description" : "The EC2 Key Pair to allow SSH access to the instance",

            "Type" : "String"

        }

    },

    "Resources" : {

        "Ec2Instance" : {

            "Type" : "AWS::EC2::Instance",

            "Properties" : {

                "KeyName" : { "Ref" : "KeyPair" },

                "ImageId" : "ami-3b355a52"

            }

        }

    },

    "Outputs" : {

        "InstanceId" : {

            "Description" : "The InstanceId of the newly created EC2 instance",

            "Value" : {

                "Ref" : "Ec2Instance"

            }

        }

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}   

使用 AWS CloudFormation 模板创建和管理堆栈

堆栈是实例化模板所产生的资源集。您可以通过向 AWS CloudFormation 提供模板和任何所需参数来创建堆栈。基于模板和在该模板中指定的任何依赖关系,AWS CloudFormation 可确定需要创建的 AWS 资源及其顺序。

若要更新堆栈,需提供具有堆栈中所有资源的所需配置的模板。您可修改堆栈中现有资源的属性,以便对环境变化或新应用程序要求作出反应。例如,您可以改变 AWS CloudWatch 警报的警报阈值,或者更新堆栈中正在实例中运行的 AMI。AWS CloudFormation 负责处理堆栈中不同资源之间的更改。在许多情况下,所做更改不会影响您运行的应用程序。但是,如果无法进行动态更改(例如在 EC2 实例上更新 AMI),AWS CloudFormation 将创建新的资源并将其重新接入堆栈,并在服务确定完全更新成功后,删除旧的资源。

AWS CloudFormation 将完整创建或更新一个堆栈。如果无法完整创建或更新堆栈,AWS CloudFormation 将回滚该堆栈。出于调试目的,可以禁用回滚操作并稍后手动重试堆栈创建或更新操作。

您还可以使用 AWS CloudFormation Designer 创建或修改堆栈的模板,然后将之提交给 AWS CloudFormation 以创建或更新堆栈。AWS CloudFormation Designer 可在 AWS 管理控制台中访问。


您可以通过 AWS 管理控制台轻松访问 AWS CloudFormation,使用该控制台的点选式 Web 界面部署和管理堆栈。只需几个简单步骤,您就能在 AWS 管理控制台内创建、删除和更新应用程序。

使用 AWS CloudFormation API

AWS CloudFormation 可提供一组操作简单并且非常灵活API。如需获取 AWS CloudFormation API 的完整清单表,请参阅 AWS CloudFormation API Reference Guide。下面列出了一些常用 API 及其功能:

CreateStack:开始创建新堆栈。调用时的输入参数包括堆栈名称和源模板的文件名(或 Amazon S3 URL)。如果堆栈创建过程成功完成,堆栈将处于 CREATE_COMPLETE 状态。如果堆栈创建失败,AWS CloudFormation 会删除之前创建的资源,除非用户指定了标记保留这些元素,以便实现调试目的。

ListStacks:列出您的账户中的所有堆栈。您可以使用该项来查看堆栈集及其当前状态,例如该堆栈已创建还是已更新。

ListStackResources:列出作为堆栈创建一部分的所有 AWS 资源名称和识别符。除了向您提供信息,此调用还可供 AWS CloudFormation 感知应用程序使用,以了解其环境。

DescribeStackEvents:列出 AWS CloudFormation 为堆栈生成的所有操作和事件,以便您可以查看创建或删除操作的进展状态。

UpdateStack:启动现有堆栈的更新过程。调用时的输入参数包括堆栈名称和所更新模板的文件名(或 Amazon S3 URL)。如果堆栈更新过程成功完成,堆栈将处于 UPDATE_COMPLETE 状态。如果堆栈更新失败,AWS CloudFormation 将回滚所进行的任何资源更改,以便堆栈返回到原始模板中所述的状态。

还可通过 AWS SDK 和 AWS CLI 使用 AWS CloudFormation。

AWS CloudFormation 与 Amazon Simple Notification Service (Amazon SNS) 结合让您能在堆栈创建、更新和删除过程中接收通知。除了 AWS CloudFormation 为您提供堆栈状态外,AWS CloudFormation 也会使其他程序获悉 CloudFormation 中的项目并做出反应,甚至会参与到堆栈配置过程中。

处理 AWS 资源

AWS CloudFormation 模板旨在让您能够利用 AWS 现有体验。每个资源都有一组参数,其名称与通过其原生 API 创建资源时所用的名称完全相同。下列模板片段演示如何定义 Amazon EBS 卷。模板中卷的逻辑名称是“myVolume”,它的类型为“AWS::EC2::Volume”。如果您以前使用过 EBS 卷,那么您应该对这些属性应该很熟悉。

"myVolume" : {

    "Type" : "AWS::EC2::Volume",

    "Properties" : {

        "Size" : "10",

        "SnapshotId" : "snap-7b8fd361",

        "AvailabilityZone" : "us-east-1a"

    }

}
显示简要信息 >>

自展应用程序和处理更新

AWS CloudFormation 提供了多个帮助程序脚本,可以设置到您的 EC2 实例中。这些脚本能让您轻松地从堆栈中读取资源元数据并用其配置您的应用程序,将设置软件包和文件到模板中所列的实例,并对配置变化或应用程序更新等堆栈更新作出反应。

可供使用脚本如下:

cfn-get-metadata:在模板中检索与资源关联的元数据。

cfn-init:下载并安装模板中所述的软件包和文件。

cfn-signal:向堆栈创建工作流程发出信号,以示您的应用程序已在运行并准备好接受流量。

cfn-hup:这是一个后台守护程序可以侦听借助 AWS 控制台/命令行工具或直接通过 API 启动的堆栈更新,并运行特定于您的应用程序的钩子以便对变化作出响应。

您可以单独或与 CloudInit 一起使用 CloudFormation 脚本,CloudInit 是 Amazon Linux AMI 和一些其他 Linux AMI 上提供的功能。有关引导应用程序和更新配置的更多详细信息,请参阅 AWS CloudFormation 开发人员资源

用途和限制

使用本服务需遵循 Amazon Web Services 客户协议

 

了解有关 AWS CloudFormation 定价的详细信息

访问“AWS CloudFormation 定价”页面
准备好开始构建?
开始使用 AWS CloudFormation
还有更多问题?
联系我们