

# Sintaxis de Outputs de la plantilla de CloudFormation
<a name="outputs-section-structure"></a>

La sección opcional `Outputs` declara los valores de salida de la pila. Estos valores de salida se pueden usar de distintas maneras:
+ **Captura de detalles importantes sobre sus recursos**: una salida es una manera cómoda de capturar información importante sobre sus recursos. Por ejemplo, puede declarar la salida para el nombre del bucket de S3 para una pila para que sea más fácil encontrar el bucket. Puede ver los valores de salida en la pestaña **Salidas** de la consola de CloudFormation o con el comando [describe-stacks](service_code_examples.md#describe-stacks-sdk) de la CLI. 
+ **Referencias entre pilas**: puede importar valores de salida a otras pilas para [crear referencias entre pilas](using-cfn-stack-exports.md). Esto es útil cuando necesita compartir recursos o configuraciones entre varias pilas.

**importante**  
CloudFormation no redacta ni enmascara ninguna información que incluya en la sección `Outputs`. Recomendamos encarecidamente que no utilice esta sección para generar información confidencial, como contraseñas o secretos.  
Los valores de salida están disponibles una vez que la operación de pila está completa. Los valores de salida de la pila no están disponibles cuando el estado de la pila está en cualquiera de estos [estados](view-stack-events.md#cfn-console-view-stack-data-resources-status-codes) `IN_PROGRESS`. No recomendamos establecer dependencias entre un tiempo de ejecución de servicio y el valor de salida de la pila porque los valores de salida pueden no estar disponibles en todo momento.

## Sintaxis
<a name="outputs-section-syntax"></a>

La sección `Outputs` consta del nombre de clave `Outputs`. Puede declarar un máximo de 200 salidas en una plantilla.

El siguiente ejemplo muestra la estructura de la sección `Outputs`.

### JSON
<a name="outputs-section-structure-syntax.json"></a>

Utilice llaves para delimitar todas las declaraciones de salida. Delimite varias salidas con comas.

```
"Outputs" : {
  "OutputLogicalID" : {
    "Description" : "Information about the value",
    "Value" : "Value to return",
    "Export" : {
      "Name" : "Name of resource to export"
    }
  }
}
```

### YAML
<a name="outputs-section-structure-syntax.yaml"></a>

```
Outputs:
  OutputLogicalID:
    Description: Information about the value
    Value: Value to return
    Export:
      Name: Name of resource to export
```

### Campos de salida
<a name="outputs-section-structure-output-fields"></a>

La sección `Outputs` puede incluir los siguientes campos.

**ID lógico (también denominado *nombre lógico*)**  
Un identificador para la salida actual. El ID lógico tiene que ser alfanumérico (`a–z`, `A–Z`, `0–9`) y único dentro de la plantilla.

**`Description` (opcional)**  
Un tipo de `String` que describe el valor de salida. El valor de la declaración de la descripción debe ser una cadena literal de entre 0 y 1024 bytes de longitud. No puede utilizar un parámetro o función para especificar la descripción. 

**`Value` (obligatorio)**  
El valor de la propiedad devuelto por el comando [describe-stacks](service_code_examples.md#describe-stacks-sdk). El valor de una salida puede incluir literales, referencias de parámetros, pseudoparámetros, un valor de asignación o funciones intrínsecas.

**`Export` (opcional)**  
El nombre de la salida de los recursos que se exportan para una referencia cruzada de pila.  
Puede utilizar funciones intrínsecas para personalizar el valor `Name` de una exportación.  
Para obtener más información, consulte [Obtención de salidas exportadas de una pila implementada de CloudFormation](using-cfn-stack-exports.md).

Para asociar una condición a una salida, defina la condición en la sección [Conditions](conditions-section-structure.md) de la plantilla.

## Ejemplos
<a name="outputs-section-structure-examples"></a>

Los siguientes ejemplos ilustran cómo funciona la salida de la pila.

**Topics**
+ [Salida de la pila](#outputs-section-structure-examples-stack-output)
+ [Personalización del nombre de exportación mediante `Fn::Sub`](#outputs-section-structure-examples-cross-stack)
+ [Personalización del nombre de exportación mediante `Fn::Join`](#outputs-section-structure-examples-join-export-name)
+ [Devuelve una URL creada con `Fn::Join`](#outputs-section-structure-examples-join-export-url)

### Salida de la pila
<a name="outputs-section-structure-examples-stack-output"></a>

En el siguiente ejemplo, la salida denominada `BackupLoadBalancerDNSName` devuelve el nombre de DNS para el recurso con el ID lógico `BackupLoadBalancer` solo cuando la condición `CreateProdResources` es true. La salida con el nombre `InstanceID` devuelve el ID de la instancia de EC2 con el ID lógico `EC2Instance`.

#### JSON
<a name="outputs-section-structure-example.json"></a>

```
"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
<a name="outputs-section-structure-example.yaml"></a>

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

### Personalización del nombre de exportación mediante `Fn::Sub`
<a name="outputs-section-structure-examples-cross-stack"></a>

En los siguientes ejemplos, la salida denominada `StackVPC` devuelve el ID de una VPC y, a continuación, exporta el valor para la referencia cruzada de la pila `VPCID` junto al nombre de la pila.

#### JSON
<a name="outputs-section-structure-cross-stack-example.json"></a>

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

#### YAML
<a name="outputs-section-structure-cross-stack-example.yaml"></a>

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

Para obtener más información sobre la función `Fn::Sub`, consulte [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-sub.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-sub.html).

### Personalización del nombre de exportación mediante `Fn::Join`
<a name="outputs-section-structure-examples-join-export-name"></a>

También puede usar de la función `Fn::Join` para crear valores basados en parámetros, atributos de recursos y otras cadenas.

En los ejemplos siguientes, se utiliza la función `Fn::Join` para personalizar el nombre de la exportación en lugar de la función `Fn::Sub`. La función `Fn::Join` de ejemplo concatena el nombre de la pila con el nombre `VPCID` utilizando dos puntos como separador.

#### JSON
<a name="outputs-section-structure-join-export-name-example.json"></a>

```
"Outputs" : {
  "StackVPC" : {
    "Description" : "The ID of the VPC",
    "Value" : { "Ref" : "MyVPC" },
    "Export" : {
      "Name" : { "Fn::Join" : [ ":", [ { "Ref" : "AWS::StackName" }, "VPCID" ] ] }
    }
  }
}
```

#### YAML
<a name="outputs-section-structure-join-export-name-example.yaml"></a>

```
Outputs:
  StackVPC:
    Description: The ID of the VPC
    Value: !Ref MyVPC
    Export:
      Name: !Join [ ":", [ !Ref "AWS::StackName", VPCID ] ]
```

Para obtener más información sobre la función `Fn::Join`, consulte [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-join.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-join.html).

### Devuelve una URL creada con `Fn::Join`
<a name="outputs-section-structure-examples-join-export-url"></a>

En el siguiente ejemplo de una plantilla para crear un sitio de WordPress, `InstallURL` es la cadena devuelta por una llamada a una función `Fn::Join` que concatena `http://`, el nombre DNS del recurso `ElasticLoadBalancer` y `/wp-admin/install.php`. El valor de salida debería ser similar al siguiente:

```
http://mywptests-elasticl-1gb51l6sl8y5v-206169572.aws-region.elb.amazonaws.com/wp-admin/install.php
```

#### JSON
<a name="outputs-section-structure-examples-join-export-url.json"></a>

```
{
    "Outputs": {
        "InstallURL": {
            "Value": {
                "Fn::Join": [
                    "",
                    [
                        "http://",
                        {
                            "Fn::GetAtt": [
                                "ElasticLoadBalancer",
                                "DNSName"
                            ]
                        },
                        "/wp-admin/install.php"
                    ]
                ]
            },
            "Description": "Installation URL of the WordPress website"
        }
    }
}
```

#### YAML
<a name="outputs-section-structure-examples-join-export-url.yaml"></a>

```
Outputs:
  InstallURL:
    Value: !Join 
      - ''
      - - 'http://'
        - !GetAtt 
          - ElasticLoadBalancer
          - DNSName
        - /wp-admin/install.php
    Description: Installation URL of the WordPress website
```

Para obtener más información sobre la función `Fn::Join`, consulte [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-join.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-join.html).