

Este é o novo *Guia de referência de modelos do CloudFormation*. Atualize seus favoritos e links. Para obter ajuda para começar a usar o CloudFormation, consulte o [Guia do usuário do AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# `AWS::LanguageExtensions`Transformação
<a name="transform-aws-languageextensions"></a>

Este tópico descreve como usar a transformação `AWS::LanguageExtensions` para habilitar funções e recursos adicionais que não estão disponíveis por padrão. 

`AWS::LanguageExtensions` é uma macro do CloudFormation que, quando referenciada no seu modelo de pilha, atualiza qualquer função intrínseca definida pela transformação para seu valor resolvido dentro do modelo quando você cria ou atualiza uma pilha usando um conjunto de alterações. 

Ao incluir essa transformação em seu modelo do CloudFormation, você pode acessar recursos adicionais, como `Fn::ForEach`, o qual permite operações mais avançadas, como iterações. Você também pode usar funções intrínsecas em locais onde elas normalmente não são permitidas, como nas funções `Ref` e `Fn::GetAtt`.

## Usage
<a name="aws-languageextensions-usage"></a>

Para usar a transformação `AWS::LanguageExtensions`, é necessário declará-la no nível superior do seu modelo do CloudFormation. Não é possível usar `AWS::LanguageExtensions` como uma transformação incorporada em nenhuma outra seção de modelo.

A declaração deve usar a string literal `AWS::LanguageExtensions` como seu valor. Você não pode usar um parâmetro ou uma função para especificar um valor de transformação.

### Sintaxe
<a name="aws-languageextensions-syntax"></a>

Para declarar essa transformação no modelo do CloudFormation, use a seguinte sintaxe:

### JSON
<a name="aws-languageextensions-syntax.json"></a>

```
{
  "Transform":"AWS::LanguageExtensions",
  "Resources":{
    ...
  }
}
```

### YAML
<a name="aws-languageextensions-syntax.yaml"></a>

```
Transform: AWS::LanguageExtensions
Resources:
  ...
```

A transformação `AWS::LanguageExtensions` é uma declaração independente sem parâmetros adicionais.

## Suporte para funções adicionais
<a name="aws-languageextensions-supported-functions"></a>

A transformação `AWS::LanguageExtensions` é compatível com as seguintes funções adicionais:
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)

## Considerações
<a name="aws-languageextensions-considerations"></a>

Ao usar a transformação `AWS::LanguageExtensions`, tenha em mente as seguintes considerações:
+ Ao atualizar uma pilha que usa a transformação `AWS::LanguageExtensions`, recomendamos que você não use a opção **Usar modelo existente** no console do CloudFormation ou a opção de linha de comando equivalente `--use-previous-template`. A transformação `AWS::LanguageExtensions` resolve os parâmetros em valores literais durante o processamento. Quando você usa `--use-previous-template`, o CloudFormation usa esse modelo processado com os valores literais antigos, impedindo que novos valores de parâmetros e atualizações de parâmetros do Systems Manager sejam aplicados. Em vez disso, forneça o modelo original para garantir que os parâmetros sejam resolvidos novamente com os valores atuais.
+ A sintaxe YAML de formato curto não é compatível com um modelo para funções intrínsecas disponíveis apenas na transformação `AWS::LanguageExtensions`. Use referências explícitas a essas funções. Por exemplo, use `Fn::Length` em vez de `!Length`.
+ No momento, a CLI do AWS SAM não oferece suporte à função intrínseca `Fn::ForEach` da transformação `AWS::LanguageExtensions`.
+ Se você estiver usando várias transformações, use um formato de lista. Se você estiver usando macros personalizadas, posicione as transformações fornecidas pela AWS depois das macros personalizadas. Se você estiver usando ambas as transformações `AWS::LanguageExtensions` e `AWS::Serverless`, a transformação `AWS::LanguageExtensions` deve vir antes da transformação `AWS::Serverless` na lista.
+ As funções e os atributos fornecidos pela transformação `AWS::LanguageExtensions` só são compatíveis com as seções `Resources`, `Conditions` e `Outputs` do seu modelo.

## Exemplos
<a name="aws-languageextensions-examples"></a>

Os exemplos a seguir mostram como usar a transformação `AWS::LanguageExtensions` para usar a função intrínseca `Fn::Length` definida pela transformação.

### JSON
<a name="aws-languageextensions-example.json"></a>

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Transform": "AWS::LanguageExtensions",
    "Parameters": {
        "QueueList": {
            "Type": "CommaDelimitedList"
        },
        "QueueNameParam": {
            "Description": "Name for your SQS queue",
            "Type": "String"
        }
    },
    "Resources": {
        "Queue": {
            "Type": "AWS::SQS::Queue",
            "Properties": {
                "QueueName": {
                    "Ref": "QueueNameParam"
                },
                "DelaySeconds": {
                    "Fn::Length": {
                        "Ref": "QueueList"
                    }
                }
            }
        }
    }
}
```

### YAML
<a name="aws-languageextensions-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::LanguageExtensions
Parameters:
  QueueList:
    Type: CommaDelimitedList
  QueueNameParam:
    Description: Name for your SQS queue
    Type: String
Resources:
  Queue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Ref QueueNameParam
      DelaySeconds:
        'Fn::Length': !Ref QueueList
```

## Recursos relacionados
<a name="aws-languageextensions-related-resources"></a>

Para obter mais exemplos, consulte os tópicos a seguir.
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)
+ [`Ref`](intrinsic-function-reference-ref.md)
+ [`Fn::GetAtt`](intrinsic-function-reference-getatt.md)
+ [`Fn::FindInMap enhancements`](intrinsic-function-reference-findinmap-enhancements.md)

Para obter mais informações sobre o uso de macros, consulte [Executar processamento personalizado em modelos do CloudFormation com macros de modelo](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) no *Guia do usuário do AWS CloudFormation*.