

# Sintaxe de Outputs de modelo do CloudFormation
<a name="outputs-section-structure"></a>

A seção `Outputs` opcional declara os valores de saída para a pilha. Esses valores de saída podem ser usados de várias maneiras:
+ **Capture detalhes importantes sobre os recursos**: uma saída é uma forma conveniente de coletar informações importantes sobre os recursos. Por exemplo, você pode produzir o nome do bucket do S3 para uma pilha para tornar o bucket mais fácil de encontrar. Os valores de saída podem ser visualizados na guia **Saídas** do console do CloudFormation ou via comando [describe-stacks](service_code_examples.md#describe-stacks-sdk) da CLI. 
+ **Referências entre pilhas**: é possível importar valores de saída para outras pilhas para [criar referências entre pilhas](using-cfn-stack-exports.md). Isso é útil quando você precisa compartilhar recursos ou configurações em várias pilhas.

**Importante**  
O CloudFormation não edita nem ofusca nenhuma informação incluída na seção `Outputs`. É altamente recomendável não usar essa seção para gerar informações confidenciais, como senhas ou segredos.  
Os valores de saída estão disponíveis após a conclusão da operação da pilha. Os valores de saída da pilha não estão disponíveis quando um status de pilha está em qualquer um dos [status](view-stack-events.md#cfn-console-view-stack-data-resources-status-codes) `IN_PROGRESS`. Não recomendamos estabelecer dependências entre um runtime de serviço e o valor de saída da pilha porque os valores de saída podem não estar disponíveis em todos os momentos.

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

A seção `Outputs` consiste no nome da chave `Outputs`. Você pode declarar no máximo 200 saídas em um modelo.

O exemplo a seguir demonstra a estrutura da seção `Outputs`.

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

Use chaves para circunscrever todas as declarações de saída. Delimite várias saídas com vírgulas.

```
"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 saída
<a name="outputs-section-structure-output-fields"></a>

A seção `Outputs` pode incluir os seguintes campos.

**ID lógico (também chamado de *nome lógico*)**  
Um identificador para a saída atual. O ID lógico deve ser alfanumérico (`a–z`, `A–Z`, `0–9`) e exclusivo no modelo.

**`Description` (opcional)**  
Um tipo `String` que descreve o valor da saída. O valor da declaração da descrição deve ser uma sequência literal com 0 a 1024 bytes de comprimento. Você não pode usar um parâmetro ou uma função para especificar a descrição. 

**`Value` (obrigatório)**  
O valor da propriedade retornado pelo comando [describe-stacks](service_code_examples.md#describe-stacks-sdk). O valor de uma saída pode incluir literais, referências a parâmetros, pseudoparâmetros, um valor de mapeamento ou funções intrínsecas.

**`Export` (opcional)**  
O nome da saída do recurso saída a ser exportado para uma referência de pilha cruzada.  
Você pode usar funções intrínsecas para personalizar o valor de `Name` de uma exportação.  
Para obter mais informações, consulte [Obter resultados exportados de uma pilha do CloudFormation implantada](using-cfn-stack-exports.md).

Para associar uma condição a uma saída, defina a condição na seção [Conditions](conditions-section-structure.md) do modelo.

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

Os exemplos a seguir ilustram como funciona a saída da pilha.

**Topics**
+ [Saída da pilha](#outputs-section-structure-examples-stack-output)
+ [Personalizar o nome da exportação usando `Fn::Sub`](#outputs-section-structure-examples-cross-stack)
+ [Personalizar o nome da exportação usando `Fn::Join`](#outputs-section-structure-examples-join-export-name)
+ [Retornar um URL construído usando `Fn::Join`](#outputs-section-structure-examples-join-export-url)

### Saída da pilha
<a name="outputs-section-structure-examples-stack-output"></a>

No exemplo a seguir, a saída chamada `BackupLoadBalancerDNSName` retorna o nome DNS do recurso com o ID lógico `BackupLoadBalancer` apenas quando a condição `CreateProdResources` é verdadeira. A saída chamada `InstanceID` retorna o ID da instância do EC2 com o 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
```

### Personalizar o nome da exportação usando `Fn::Sub`
<a name="outputs-section-structure-examples-cross-stack"></a>

Nos exemplos a seguir, a saída chamada `StackVPC` retorna o ID de uma VPC e, em seguida, exporta o valor para a referência de pilha cruzada com o nome `VPCID` anexado ao nome da pilha.

#### 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 obter mais informações sobre a função `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).

### Personalizar o nome da exportação usando `Fn::Join`
<a name="outputs-section-structure-examples-join-export-name"></a>

Use a função `Fn::Join` para construir valores com base em parâmetros, atributos de recursos e outras strings.

Os exemplos apresentados a seguir usam a função `Fn::Join`, em vez da função `Fn::Sub`, para personalizar o nome da exportação. A função `Fn::Join` de exemplo concatena o nome da pilha com o nome `VPCID` usando dois pontos como um 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 obter mais informações sobre a função `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).

### Retornar um URL construído usando `Fn::Join`
<a name="outputs-section-structure-examples-join-export-url"></a>

No exemplo a seguir de um modelo que cria um site do WordPress, `InstallURL` é a string retornada por uma chamada da função `Fn::Join` que concatena `http://`, o nome DNS do recurso `ElasticLoadBalancer` e `/wp-admin/install.php`. O valor de saída seria semelhante ao seguinte:

```
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 obter mais informações sobre a função `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).