Kai 向您演示如何
在创建模板时引用不同
CloudFormation 堆栈中的
资源

kai_dynamic_port_mapping

如何在创建模板期间引用位于其他 AWS CloudFormation 堆栈的资源?

随着您的 AWS CloudFormation 使用量上升,您可以创建静态堆栈以托管基础设施资源。然后,您可以创建引用所需资源的其他消费堆栈,无需单独管理各个堆栈。

资源堆栈将作为独立于应用程序的静态服务。引用点好比与用户之间进行交互的接口。跨堆栈引用使用的架构涉及类似于服务导向型的架构。

如要创建跨堆栈引用,请使用导出输出字段来标注要导出的资源输出的值,然后使用 Fn::ImportValue 内部函数以导入该值。导出的值根据模板中指定的名称识别,该名称必须是你所在区域唯一。

注意:本文提供了一个有关如何创建跨堆栈引用的示例。有关完整的说明,请参阅演练:引用另一个 AWS CloudFormation 堆栈中的资源输出

使用导入的子网和安全组创建实例

1.    打开 AWS CloudFormation 控制台,选择 Create Stack,然后选择 Design template

2.    在页面底部选择 Template 选项卡。

3.    复制示例模板,例如 Fn::ImportValue,或使用如下示例:

{
   "Parameters":{
        "NetworkStackNameParameter":{
              "Type":"String"
      }
    },
"Resources" : {
  "WebServerInstance" : {
    "Type" : "AWS::EC2::Instance",
    "Properties" : {
      "InstanceType" : "t2.micro",
      "ImageId" : "ami-a1b23456",
      "NetworkInterfaces" : [{
        "GroupSet" : [{"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SecurityGroupID"}}],
        "AssociatePublicIpAddress" : "true",
        "DeviceIndex" : "0",
        "DeleteOnTermination" : "true",
        "SubnetId" : {"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SubnetID"}}
      }]
    }
  }
}

注意:请根据您的资源名称更新模板。

4.    选择 Create stack 图标,然后选择 Next 并键入名称。

5.    对于 Parameters,请输入您希望交叉引用的网络堆栈名称。

6.    选择 Next,然后再次选择 Next

7.    从 CloudFormation 下拉菜单选择 Exports 以查看导出名称和导出值。

8.    打开 Amazon EC2 控制台

9.    在导航屏幕的 Instances 下,选择您创建的示例 ID。

10.  选择 Description 视图,确认已经配置了安全组和子网。

注意:其他堆栈正在使用导出值时不能删除源堆栈。Export Name 对每个区域的账户而言必须是唯一的。


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 1 月 9 日