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

输出

可选的 Outputs 部分声明输出值,您可以将这些值导入到其他堆栈中(以便创建跨堆栈引用)、在响应中返回这些值(以便描述堆栈调用)或者在 AWS CloudFormation 控制台中查看。例如,您可以输出堆栈的 S3 存储桶名称以使该存储桶更容易找到。

语法

Outputs 部分包含键名称 Outputs,后跟一个空格和一个冒号。您最多可在一个模板中声明 60 个输出。

以下示例演示了 Outputs 部分的结构。

JSON

使用括号将所有输出声明括起来。使用逗号分隔多个输出。

"Outputs" : { "Logical ID" : { "Description" : "Information about the value", "Value" : "Value to return", "Export" : { "Name" : "Value to export" } } }

YAML

Outputs: Logical ID: Description: Information about the value Value: Value to return Export: Name: Value to export

输出字段

Outputs 部分包含以下字段。

逻辑 ID

当前输出的标识符。逻辑 ID 必须为字母数字(a-zA-Z0-9),并且在模板中具有唯一性。

Description(可选)

一个描述输出类型的 String 类型。说明长度最大可为 4 K。

Value(必需)

aws cloudformation describe-stacks 命令返回的属性值。输出值可以包括文字值、参数引用、伪参数、映射值或内部函数。

Export(可选)

要为跨堆栈引用导出的资源输出的名称。

注意

以下限制适用于跨堆栈引用:

  • 对于每个 AWS 账户,Export 名称在一个区域内必须是唯一的。

  • 不能在区域之间创建跨堆栈引用。您只能使用内部函数 Fn::ImportValue 导入在同一区域内已经导出的值。

  • 对于输出,ExportName 属性值不能使用依赖于资源的函数 (RefGetAtt)。

    同样,ImportValue 函数不能包括依赖于资源的函数 (RefGetAtt)。

  • 如果另一个堆栈引用一个堆栈的其中一个输出,则您无法删除被引用堆栈。

  • 您无法修改或删除由另一个堆栈引用的输出值。

您可使用内部函数自定义导出的 Name 值。以下示例使用 Fn::Join 函数。

JSON

"Export" : { "Name" : { "Fn::Join" : [ ":", [ { "Ref" : "AWS::StackName" }, "AccountVPC" ] ] } }

YAML

Export: Name: !Join [ ":", [ !Ref "AWS::StackName", AccountVPC ] ]

要将条件与输出关联,请在模板的 Conditions 部分中定义条件。

示例

下面的示例说明了堆栈输出的工作原理。

堆栈输出

在以下示例中,仅当 CreateProdResources 条件为 true 时,名为 BackupLoadBalancerDNSName 的输出才返回逻辑 ID 为 BackupLoadBalancer 的资源的 DNS 名称。(第二个输出说明如何指定多个输出。)

JSON

"Outputs" : { "BackupLoadBalancerDNSName" : { "Description": "The DNSName of the backup load balancer", "Value" : { "Fn::GetAtt" : [ "BackupLoadBalancer", "DNSName" ]}, "Condition" : "CreateProdResources" }, "InstanceID" : { "Description": "The Instance ID", "Value" : { "Ref" : "EC2Instance" } } }

YAML

Outputs: BackupLoadBalancerDNSName: Description: The DNSName of the backup load balancer Value: !GetAtt BackupLoadBalancer.DNSName Condition: CreateProdResources InstanceID: Description: The Instance ID Value: !Ref EC2Instance

跨堆栈输出

在以下示例中,名为 StackVPC 的输出返回 VPC 的 ID,然后在堆栈名称中附加 VPCID 导出跨堆栈引用的值。

JSON

"Outputs" : { "StackVPC" : { "Description" : "The ID of the VPC", "Value" : { "Ref" : "MyVPC" }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-VPCID" } } } }

YAML

Outputs: StackVPC: Description: The ID of the VPC Value: !Ref MyVPC Export: Name: !Sub "${AWS::StackName}-VPCID"

本页内容: