1. 介绍
Designer 是用于创建、查看和修改 AWS CloudFormation 模板的图形工具。通过它,可以使用拖拽界面来绘制模板资源图,然后使用集成的 JSON 和 YAML 编辑器来编辑详细信息。
本文将使用 Designer 创建一个 CloudFormation 堆栈;将使用 Designer 添加资源并编辑基本的 Parameters、Mappings 和 Outputs;将使用 Designer 验证并启动堆栈,然后查看正在运行的堆栈。最后通过删除堆栈来清理资源。
2. Designer 工具组件

- 工具栏
- 工具栏提供对常用操作的命令的快速访问,例如打开和保存模板,撤消或重做更改,创建堆栈以及验证模板。
- 资源类型窗口
- “资源类型”窗格列出了所有模板资源(按其 AWS 服务名称分类),您可以通过将其拖动到画布上来添加到模板中。
- 帆布
- 画布窗格将您的模板资源显示为图表。
- 您可以使用它来添加或删除资源,在资源之间创建关系并安排其布局。
- 您在画布中所做的更改会自动修改模板的JSON。
- JSON 编辑器
- 在 JSON 编辑器中,您可以指定模板的详细信息,例如资源属性或模板参数。
- 当您在画布中选择一个项目时,相关的 JSON 将在编辑器中突出显示。
- 调节大小按钮
- 这将调整画布窗口的大小以展示图表资源。
- 全屏或分屏按钮
- 这些选择 AWS CloudFormation Designer 的不同视图。您可以选择画布的全屏视图,JSON 编辑器的全屏视图或画布和编辑器的分屏视图。
- 消息窗口
- 当打开、验证或尝试使用无效模板创建堆栈时,它将显示错误信息。
3. 实验
任务1:添加 EC2 实例资源



任务2:设置参数
参数是在创建堆栈时指定的输入值。参数对于传递值很有用,以避免模板中的硬编码。例如,您不需要再模板中对服务器 实例类型 进行硬编码。相反,可以在创建堆栈时使用参数指定实例类型。这允许使用同一模板来创建具有不同实例类型的多个服务器。
{"Parameters": {"InstanceType": {"Description": "Server EC2 instance type","Type": "String","Default": "t3.micro","AllowedValues": ["t3.micro","t2.micro"],"ConstraintDescription": "must be a valid EC2 instance type."}}}
此代码添加了用于选择“实例类型”的参数。
任务3:添加映射
映射对于根据输入参数值来指定某个属性值很有用。在本例中,将使用映射根据堆栈部署的 Region 为 EC2 实例选择 AMI ID。
{"Mappings" : {"AWSRegionToAMI": {"us-east-1": { "AMI": "ami-c58c1dd3" },"us-east-2": { "AMI": "ami-4191b524" },"us-west-1": { "AMI": "ami-7a85a01a" },"us-west-2": { "AMI": "ami-4836a428" },"ca-central-1": { "AMI": "ami-0bd66a6f" },"eu-west-1": { "AMI": "ami-01ccc867" },"eu-west-2": { "AMI": "ami-b6daced2" },"eu-central-1": { "AMI": "ami-b968bad6" },"sa-east-1": { "AMI": "ami-37cfad5b" },"ap-southeast-1": { "AMI": "ami-fc5ae39f" },"ap-southeast-2": { "AMI": "ami-162c2575" },"ap-south-1": { "AMI": "ami-52c7b43d" },"ap-northeast-1": { "AMI": "ami-923d12f5" },"ap-northeast-2": { "AMI": "ami-9d15c7f3" }}}}
任务4:添加输出
本例中,将输出 EC2 实例的 Public IP。
{"Outputs": {"PublicIP": {"Value": {"Fn::GetAtt": ["ServerInstance","PublicIp"]},"Description": "Newly created server IP address"}}}
任务5:指定资源属性
本例中,为 EC2 实例指定一些属性:
{"Resources": {"ServerInstance": {"Type": "AWS::EC2::Instance","Properties": {"InstanceType": {"Ref": "InstanceType"},"ImageId": {"Fn::FindInMap": ["AWSRegionToAMI",{"Ref": "AWS::Region"},"AMI"]}}}}}
该 InstanceType 将被设置为通过 Parameters 部分定义传递的值。
该 ImageId 将使用映射,通过正在使用堆栈的 Region 来选择适当的 AMI。
任务6:保存模板
任务7:验证模板有效性

