AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS CloudFormation 概念

在使用 AWS CloudFormation 时,将使用模板堆栈。您创建模板来描述 AWS 资源及其属性。当您创建堆栈时,AWS CloudFormation 会配置模板中描述的资源。

模板

AWS CloudFormation 模板是 JSON 或 YAML 格式的文本文件。您可使用任何扩展名 (如 .json.yaml.template.txt) 保存这些文件。AWS CloudFormation 使用这些模板作为用于构建您的 AWS 资源的蓝图。例如,在模板中,您可描述 Amazon EC2 实例,如实例类型、AMI ID、块储存设备映射和其 Amazon EC2 密钥对名称。当您创建堆栈时,还可以指定 AWS CloudFormation 用来创建模板中描述的任何项的模板。

例如,如果您使用以下模板创建堆栈,则 AWS CloudFormation 将使用 ami-2f726546 AMI ID、t1.micro 实例类型、testkey 密钥对名称和 Amazon EBS 卷来配置实例。

例 JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A sample template", "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-2f726546", "InstanceType" : "t1.micro", "KeyName" : "testkey", "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeType" : "io1", "Iops" : "200", "DeleteOnTermination" : "false", "VolumeSize" : "20" } } ] } } } }

例 YAML

AWSTemplateFormatVersion: "2010-09-09" Description: A sample template Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-2f726546" InstanceType: t1.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20

您还可以在单个模板中指定多种资源并将这些资源配置为结合使用。例如,您可以修改上一个模板来包含一个弹性 IP (EIP) 并将其与 Amazon EC2 实例相关联,如以下示例所示:

例 JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A sample template", "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-2f726546", "InstanceType" : "t1.micro", "KeyName" : "testkey", "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeType" : "io1", "Iops" : "200", "DeleteOnTermination" : "false", "VolumeSize" : "20" } } ] } }, "MyEIP" : { "Type" : "AWS::EC2::EIP", "Properties" : { "InstanceId" : {"Ref": "MyEC2Instance"} } } } }

例 YAML

AWSTemplateFormatVersion: "2010-09-09" Description: A sample template Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-2f726546" InstanceType: t1.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20 MyEIP: Type: AWS::EC2::EIP Properties: InstanceId: !Ref MyEC2Instance

之前的模板以 Amazon EC2 实例为中心;但 AWS CloudFormation 模板还具有其他功能,可利用这些功能来构建复杂的资源集并在许多环境中重新使用这些模板。例如,您可添加输入参数,其值是在创建 AWS CloudFormation 堆栈时指定的。换句话说,您可在创建堆栈而不是创建模板时指定一个值(如实例类型),以便在不同的情况下更轻松地重新使用模板。

有关模板创建和功能的更多信息,请参阅模板剖析

有关声明特定资源的更多信息,请参阅 AWS 资源类型参考

要开始使用 AWS CloudFormation Designer 设计您自己的模板,请转到 https://console.amazonaws.cn/cloudformation/designer

堆栈

在您使用 AWS CloudFormation 时,可将相关资源作为一个称为“堆栈”的单元进行管理。您可通过创建、更新和删除堆栈来创建、更新和删除一组资源。堆栈中的所有资源均由堆栈的 AWS CloudFormation 模板定义。假设您创建了一个包括 Auto Scaling 组、Elastic Load Balancing 负载均衡器和 Amazon Relational Database Service (Amazon RDS) 数据库实例的模板。要创建这些资源,您可通过提交已创建的模板来创建堆栈,AWS CloudFormation 将会为您配置所有这些资源。您可通过使用 AWS CloudFormation 控制台APIAWS CLI 来使用堆栈。

有关创建、更新或删除堆栈的更多信息,请参阅使用堆栈

更改集

如果您需要更改堆栈中运行的资源,则可更新堆栈。在更改资源之前,您可以生成汇总您要进行的更改的更改集。利用更改集,您可以在实施更改之前,了解更改可能会对运行的资源(特别是关键资源)造成的影响。

例如,如果您更改 Amazon RDS 数据库实例的名称,则 AWS CloudFormation 将创建新数据库并删除旧数据库。除非您已经对旧数据库中的数据进行备份,否则您将丢失该数据。如果您生成了更改集,则将了解更改会导致数据库被替换,而您可以先做出相应的计划,然后再更新堆栈。有关更多信息,请参阅 使用更改集更新堆栈

本页内容: