

Esta es la nueva *Guía de referencia de plantillas de CloudFormation*. Actualice sus marcadores y enlaces. Para obtener ayuda sobre cómo empezar a usar CloudFormation, consulte la [Guía del usuario de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# `AWS::LanguageExtensions`Transformación de
<a name="transform-aws-languageextensions"></a>

En este tema se describe cómo usar la transformación `AWS::LanguageExtensions` para habilitar funciones y capacidades adicionales que no están disponibles de forma predeterminada. 

`AWS::LanguageExtensions` es una macro de CloudFormation que, al hacer referencia a ella en la plantilla de la pila, actualiza cualquier función intrínseca definida por la transformación a su valor resuelto dentro de la plantilla al crear o actualizar una pila mediante un conjunto de cambios. 

Al incluir esta transformación en la plantilla de CloudFormation, puede acceder a características adicionales, como `Fn::ForEach`, que permiten operaciones más avanzadas, como la iteración. También puede usar funciones intrínsecas en lugares en los que normalmente no están permitidas, como en las funciones `Ref` y `Fn::GetAtt`.

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

Para usar la transformación `AWS::LanguageExtensions`, debe declararla en el nivel superior de la plantilla de CloudFormation. No se puede utilizar `AWS::LanguageExtensions` como transformación integrada en ninguna otra sección de la plantilla.

La declaración debe usar la cadena literal `AWS::LanguageExtensions` como valor. No puede utilizar un parámetro o función para especificar un valor de transformación.

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

Para declarar esta transformación en su plantilla de CloudFormation, use la siguiente sintaxis:

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

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

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

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

La transformación `AWS::LanguageExtensions` es una declaración independiente sin parámetros adicionales.

## Compatibilidad con funciones adicionales
<a name="aws-languageextensions-supported-functions"></a>

La transformación `AWS::LanguageExtensions` admite las siguientes funciones adicionales:
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)

## Consideraciones
<a name="aws-languageextensions-considerations"></a>

Cuando use la transformación `AWS::LanguageExtensions`, tenga en cuenta las siguientes consideraciones:
+ Si actualiza una pila que usa la transformación `AWS::LanguageExtensions`, le recomendamos que no utilice la opción **Utilizar plantilla existente** en la consola de CloudFormation ni la opción equivalente de la línea de comandos `--use-previous-template`. La transformación `AWS::LanguageExtensions` resuelve los parámetros en valores literales durante el procesamiento. Cuando se utiliza `--use-previous-template`, CloudFormation utiliza esta plantilla procesada con los valores literales anteriores, lo que impide que se apliquen nuevos valores de parámetros y actualizaciones de parámetros de Systems Manager. En su lugar, proporcione la plantilla original para garantizar que los parámetros se vuelvan a resolver con los valores actuales.
+ La sintaxis YAML de formato corto no se admite en una plantilla para las funciones intrínsecas que proporcione la transformación `AWS::LanguageExtensions`. Use las referencias explícitas a estas funciones. Por ejemplo, utilice `Fn::Length` en lugar de `!Length`.
+ Actualmente, la AWS SAM CLI no admite la función intrínseca `Fn::ForEach` de la transformación `AWS::LanguageExtensions`.
+ Si usa varias transformaciones, use un formato de lista. Si usa macros personalizadas, coloque las transformaciones que proporcione AWS después de sus macros personalizadas. Si usa las transformaciones `AWS::LanguageExtensions` y `AWS::Serverless`, la transformación `AWS::LanguageExtensions` debe aparecer antes que la transformación `AWS::Serverless` en la lista.
+ Las funciones y los atributos proporcionados por la transformación `AWS::LanguageExtensions` solo se admiten en las secciones `Resources`, `Conditions` y `Outputs` de la plantilla.

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

En los siguientes ejemplos se muestra cómo usar la transformación `AWS::LanguageExtensions` para usar la función intrínseca `Fn::Length`, definida por la transformación.

### 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 ver más ejemplos, consulte los siguientes temas.
+ [`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 obtener información general sobre el uso de las macros, consulte [Procesamientos personalizados en plantillas de CloudFormation con macros de plantillas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) en la *Guía del usuario de AWS CloudFormation*.