1. 介绍

Designer 是用于创建、查看和修改 AWS CloudFormation 模板的图形工具。通过它,可以使用拖拽界面来绘制模板资源图,然后使用集成的 JSON 和 YAML 编辑器来编辑详细信息。

本文将使用 Designer 创建一个 CloudFormation 堆栈;将使用 Designer 添加资源并编辑基本的 Parameters、Mappings 和 Outputs;将使用 Designer 验证并启动堆栈,然后查看正在运行的堆栈。最后通过删除堆栈来清理资源。

2. Designer 工具组件

AWS CloudFormation Designer 简介 - 图1

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

3. 实验

任务1:添加 EC2 实例资源

image.png
image.png
image.png

任务2:设置参数

参数是在创建堆栈时指定的输入值。参数对于传递值很有用,以避免模板中的硬编码。例如,您不需要再模板中对服务器 实例类型 进行硬编码。相反,可以在创建堆栈时使用参数指定实例类型。这允许使用同一模板来创建具有不同实例类型的多个服务器。
image.png

  1. {
  2. "Parameters": {
  3. "InstanceType": {
  4. "Description": "Server EC2 instance type",
  5. "Type": "String",
  6. "Default": "t3.micro",
  7. "AllowedValues": [
  8. "t3.micro",
  9. "t2.micro"
  10. ],
  11. "ConstraintDescription": "must be a valid EC2 instance type."
  12. }
  13. }
  14. }

此代码添加了用于选择“实例类型”的参数。

任务3:添加映射

映射对于根据输入参数值来指定某个属性值很有用。在本例中,将使用映射根据堆栈部署的 Region 为 EC2 实例选择 AMI ID。

  1. {
  2. "Mappings" : {
  3. "AWSRegionToAMI": {
  4. "us-east-1": { "AMI": "ami-c58c1dd3" },
  5. "us-east-2": { "AMI": "ami-4191b524" },
  6. "us-west-1": { "AMI": "ami-7a85a01a" },
  7. "us-west-2": { "AMI": "ami-4836a428" },
  8. "ca-central-1": { "AMI": "ami-0bd66a6f" },
  9. "eu-west-1": { "AMI": "ami-01ccc867" },
  10. "eu-west-2": { "AMI": "ami-b6daced2" },
  11. "eu-central-1": { "AMI": "ami-b968bad6" },
  12. "sa-east-1": { "AMI": "ami-37cfad5b" },
  13. "ap-southeast-1": { "AMI": "ami-fc5ae39f" },
  14. "ap-southeast-2": { "AMI": "ami-162c2575" },
  15. "ap-south-1": { "AMI": "ami-52c7b43d" },
  16. "ap-northeast-1": { "AMI": "ami-923d12f5" },
  17. "ap-northeast-2": { "AMI": "ami-9d15c7f3" }
  18. }
  19. }
  20. }

任务4:添加输出

本例中,将输出 EC2 实例的 Public IP。

  1. {
  2. "Outputs": {
  3. "PublicIP": {
  4. "Value": {
  5. "Fn::GetAtt": [
  6. "ServerInstance",
  7. "PublicIp"
  8. ]
  9. },
  10. "Description": "Newly created server IP address"
  11. }
  12. }
  13. }

任务5:指定资源属性

本例中,为 EC2 实例指定一些属性:

  1. {
  2. "Resources": {
  3. "ServerInstance": {
  4. "Type": "AWS::EC2::Instance",
  5. "Properties": {
  6. "InstanceType": {
  7. "Ref": "InstanceType"
  8. },
  9. "ImageId": {
  10. "Fn::FindInMap": [
  11. "AWSRegionToAMI",
  12. {
  13. "Ref": "AWS::Region"
  14. },
  15. "AMI"
  16. ]
  17. }
  18. }
  19. }
  20. }
  21. }

InstanceType 将被设置为通过 Parameters 部分定义传递的值。
ImageId 将使用映射,通过正在使用堆栈的 Region 来选择适当的 AMI。

任务6:保存模板

image.png

任务7:验证模板有效性

image.png