

Il s’agit du nouveau *Guide de référence des modèles CloudFormation *. Veuillez mettre à jour vos favoris et vos liens. Pour obtenir de l'aide pour démarrer CloudFormation, consultez le [guide de AWS CloudFormation l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Transformation `AWS::LanguageExtensions`
<a name="transform-aws-languageextensions"></a>

Cette rubrique décrit comment utiliser la transformation `AWS::LanguageExtensions` pour activer des fonctions et capacités supplémentaires non disponibles par défaut. 

`AWS::LanguageExtensions`Il s'agit d'une CloudFormation macro qui, lorsqu'elle est référencée dans votre modèle de pile, met à jour toute fonction intrinsèque définie par la transformation à sa valeur résolue dans le modèle lorsque vous créez ou mettez à jour une pile à l'aide d'un ensemble de modifications. 

En incluant cette transformation dans votre CloudFormation modèle, vous pouvez accéder à des fonctionnalités supplémentaires, telles que`Fn::ForEach`, qui permettent des opérations plus avancées telles que l'itération. Vous pouvez également utiliser des fonctions intrinsèques dans des emplacements où elles ne sont normalement pas autorisées, tels que dans les fonctions `Ref` et `Fn::GetAtt`.

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

Pour utiliser la `AWS::LanguageExtensions` transformation, vous devez la déclarer au niveau supérieur de votre CloudFormation modèle. Vous ne pouvez pas utiliser `AWS::LanguageExtensions` comme transformation incorporée dans une autre section de modèle.

La déclaration doit utiliser la chaîne littérale `AWS::LanguageExtensions` comme valeur. Vous ne pouvez pas utiliser de paramètre ou de fonction pour spécifier la valeur de transformation.

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

Pour déclarer cette transformation dans votre CloudFormation modèle, utilisez la syntaxe suivante :

### 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 transformation `AWS::LanguageExtensions` est une déclaration autonome sans paramètres supplémentaires.

## Prise en charge de fonctions supplémentaires
<a name="aws-languageextensions-supported-functions"></a>

La transformation `AWS::LanguageExtensions` prend en charge les fonctions supplémentaires suivantes :
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)

## Considérations
<a name="aws-languageextensions-considerations"></a>

Lors de l'utilisation de la transformation `AWS::LanguageExtensions`, gardez à l'esprit les considérations suivantes :
+ Lorsque vous mettez à jour une pile qui utilise la `AWS::LanguageExtensions` transformation, nous vous recommandons de ne pas utiliser l'option **Utiliser un modèle existant** dans la CloudFormation console, ni l'option de ligne de commande équivalente`--use-previous-template`. La transformation `AWS::LanguageExtensions` résout les paramètres en valeurs littérales pendant le traitement. Lorsque vous utilisez`--use-previous-template`, CloudFormation utilise ce modèle traité avec les anciennes valeurs littérales, empêchant ainsi l'application de nouvelles valeurs de paramètres et de mises à jour des paramètres de Systems Manager. Pour garantir une résolution correcte et à jour des paramètres, fournissez toujours le modèle original non transformé.
+ La forme courte YAML abrégée n'est pas prise en charge dans un modèle pour les fonctions intrinsèques fournies par la transformation `AWS::LanguageExtensions`. Utilisez des références explicites aux fonctions. Par exemple, utilisez `Fn::Length` plutôt que `!Length`.
+ La AWS SAM CLI ne prend actuellement pas en charge la fonction `Fn::ForEach` intrinsèque de la `AWS::LanguageExtensions` transformation.
+ Si vous utilisez plusieurs transformations, utilisez un format de liste. Si vous utilisez des macros personnalisées, placez les transformations AWS fournies après vos macros personnalisées. Si vous utilisez à la fois les transformations `AWS::LanguageExtensions` et `AWS::Serverless`, la transformation `AWS::LanguageExtensions` doit venir avant la transformation `AWS::Serverless` dans la liste.
+ Les fonctions et attributs fournis par la transformation `AWS::LanguageExtensions` ne sont pris en charge que dans les sections `Resources`, `Conditions` et `Outputs` de votre modèle.

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

Les exemples suivants montrent comment utiliser la transformation `AWS::LanguageExtensions` pour utiliser la fonction intrinsèque `Fn::Length` définie par la transformation.

### 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
```

## Ressources connexes
<a name="aws-languageextensions-related-resources"></a>

Pour d’autres exemples, consultez les rubriques suivantes.
+ [`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)

Pour obtenir des informations générales sur l'utilisation des macros, voir [Effectuer un traitement personnalisé sur des CloudFormation modèles à l'aide de modèles de macros](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) dans le *Guide de AWS CloudFormation l'utilisateur*.