💾 Archived View for cfdocs.wetterberg.nu › outputs-section-structure.gemini captured on 2024-05-12 at 15:14:24. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-12-03)
-=-=-=-=-=-=-
The optional `Outputs` section declares output values that you can import into other stacks (to create cross\-stack references), return in response (to describe stack calls), or view on the AWS CloudFormation console. For example, you can output the S3 bucket name for a stack to make the bucket easier to find.
view on the AWS CloudFormation console
CloudFormation does not redact or obfuscate any information you include in the Outputs section. We strongly recommend you do not use this section to output sensitive information, such as passwords or secrets.
The `Outputs` section consists of the key name `Outputs`, followed by a space and a single colon. You can declare a maximum of 200 outputs in a template.
The following example demonstrates the structure of the `Outputs` section.
Use braces to enclose all output declarations. Delimit multiple outputs with commas.
"Outputs" : { "Logical ID" : { "Description" : "Information about the value", "Value" : "Value to return", "Export" : { "Name" : "Value to export" } } }
Outputs: Logical ID: Description: Information about the value Value: Value to return Export: Name: Value to export
The `Outputs` section can include the following fields.
An identifier for the current output. The logical ID must be alphanumeric (`a-z`, `A-Z`, `0-9`) and unique within the template.
A `String` type that describes the output value. The value for the description declaration must be a literal string that is between 0 and 1024 bytes in length. You cannot use a parameter or function to specify the description. The description can be a maximum of 4 K in length.
The value of the property returned by the `aws cloudformation describe-stacks` command. The value of an output can include literals, parameter references, pseudo-parameters, a mapping value, or intrinsic functions.
The name of the resource output to be exported for a cross\-stack reference.
The following restrictions apply to cross-stack references:
"Export" : { "Name" : { "Fn::Join" : [ ":", [ { "Ref" : "AWS::StackName" }, "AccountVPC" ] ] } }
YAML
Export: Name: !Join [ ":", [ !Ref "AWS::StackName", AccountVPC ] ]
To associate a condition with an output, define the condition in the `Conditions` section of the template.
The following examples illustrate how stack output works.
In the following example, the output named `BackupLoadBalancerDNSName` returns the DNS name for the resource with the logical ID `BackupLoadBalancer` only when the `CreateProdResources` condition is true. (The second output shows how to specify multiple outputs.)
"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" } } }
Outputs: BackupLoadBalancerDNSName: Description: The DNSName of the backup load balancer Value: !GetAtt BackupLoadBalancer.DNSName Condition: CreateProdResources InstanceID: Description: The Instance ID Value: !Ref EC2Instance
In the following examples, the output named `StackVPC` returns the ID of a VPC, and then exports the value for cross-stack referencing with the name `VPCID` appended to the stack's name.
"Outputs" : { "StackVPC" : { "Description" : "The ID of the VPC", "Value" : { "Ref" : "MyVPC" }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-VPCID" } } } }
Outputs: StackVPC: Description: The ID of the VPC Value: !Ref MyVPC Export: Name: !Sub "${AWS::StackName}-VPCID"