

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::Serverless`
<a name="transform-aws-serverless"></a>

Cette rubrique décrit comment utiliser la `AWS::Serverless` transformation pour traiter un modèle écrit dans la syntaxe AWS SAM ( AWS Serverless Application Model) et le transformer en un CloudFormation modèle conforme. 

Pour plus d’informations sur l’utilisation de la transformation `AWS::Serverless`, consultez [Transformation AWS SAM](https://github.com/aws/serverless-application-model) sur GitHub.

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

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

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

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

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

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

```
{
  "Transform":"AWS::Serverless-2016-10-31",
  "Resources":{
    ...
  }
}
```

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

```
Transform: AWS::Serverless-2016-10-31
Resources:
  ...
```

La transformation `AWS::Serverless` est une déclaration autonome sans paramètres supplémentaires.

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

Les exemples suivants montrent comment utiliser la transformation `AWS::Serverless` et la syntaxe  AWS SAM pour simplifier la déclaration d’une fonction Lambda et de son rôle d’exécution.

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

```
{
  "Transform":"AWS::Serverless-2016-10-31",
  "Resources":{
    "MyFunction":{
      "Type":"AWS::Serverless::Function",
      "Properties":{
        "Handler":"index.handler",
        "Runtime":"nodejs20.x",
        "CodeUri":"s3://amzn-s3-demo-bucket/MySourceCode.zip"
      }
    }
  }
}
```

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

```
Transform: AWS::Serverless-2016-10-31
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs20.x
      CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip'
```

Lorsque vous créez un ensemble de modifications à partir du modèle, CloudFormation développe la AWS SAM syntaxe, telle que définie par la transformation. Le modèle traité développe la ressource `AWS::Serverless::Function`, qui déclare une fonction Lambda et un rôle d’exécution.

```
{
  "Resources": {
    "MyFunction": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Handler": "index.handler",
        "Code": {
          "S3Bucket": "amzn-s3-demo-bucket",
          "S3Key": "MySourceCode.zip"
        },
        "Role": {
          "Fn::GetAtt": ["MyFunctionRole", "Arn"]
        },
        "Runtime": "nodejs20.x"
      }
    },
    "MyFunctionRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"],
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [{
            "Action": ["sts:AssumeRole"],
            "Effect": "Allow",
            "Principal": {
              "Service": ["lambda.amazonaws.com"]
            }
          }]
        }
      }
    }
  }
}
```

## Utilisation d’`AWS::Serverless` avec `AWS::LanguageExtensions`
<a name="aws-serverless-language-extensions"></a>

Lorsque vous utilisez à la fois les transformations `AWS::Serverless` et `AWS::LanguageExtensions`, la référence à des ressources telles que `AWS::ApiGateway::Stage` nécessite une syntaxe particulière si le nom d’étape est transmis sous forme de valeur non `NoEcho`.

Au lieu d'utiliser la AWS SAM syntaxe de la référence (`MyApi.Stage`), utilisez-la `Fn::Sub` pour générer la référence d'ID logique. Par exemple, `"Ref": {"Fn::Sub": "${MyApi}${StageName}Stage"}`. Cela produit le bon ID logique lors de l’exécution.

Cette syntaxe est nécessaire parce que les deux transformations traitent les valeurs différemment :
+ `AWS::LanguageExtensions` résout les fonctions intrinsèques en leurs valeurs réelles.
+ `AWS::Serverless`crée une logique différente IDs selon qu'il reçoit une valeur statique ou une fonction intrinsèque.

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

Pour plus d'informations sur les applications sans serveur et le modèle d'application AWS sans serveur (AWS SAM), consultez le guide [AWS Serverless Application Model du développeur](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html).

Pour connaître les types de ressources et de propriétés spécifiques à AWS SAM, reportez-vous à la section [AWS SAM Ressources et propriétés](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-resources-and-properties.html) du *Guide du AWS Serverless Application Model développeur*.

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*.