

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.

# Qu'est-ce que le AWS Serverless Application Model (AWS SAM) ?
<a name="what-is-sam"></a>

AWS Serverless Application Model (AWS SAM) est un framework open source permettant de créer des applications sans serveur en utilisant l'infrastructure en tant que code (IAc). Avec AWS SAM sa syntaxe abrégée, les développeurs déclarent les [CloudFormation](https://aws.amazon.com/cloudformation)ressources et les ressources sans serveur spécialisées qui sont transformées en infrastructure lors du déploiement. Lorsque vous travaillerez avec AWS SAM, vous interagirez avec :

1. AWS SAM CLI- Un outil de ligne de commande qui vous permet de développer, de tester localement et de déployer vos applications sans serveur.

1. AWS SAM Modèle : extension de CloudFormation ce modèle qui fournit une syntaxe simplifiée pour définir les ressources sans serveur.

Lorsque vous utilisez la **sam init** commande, elle crée un répertoire de projet, que nous appellerons le AWS SAM projet, qui inclut généralement votre AWS SAM modèle, le code de votre application et d'autres fichiers de configuration.

## Quand utiliser AWS SAM
<a name="when-to-use-sam"></a>

AWS SAM est une solution IaC idéale pour les scénarios dans lesquels vous souhaitez un développement sans serveur simplifié avec toute la puissance de CloudFormation. Par exemple, vous pouvez utiliser SAM pour :
+ **Applications sans serveur :** vous pouvez utiliser SAM pour définir rapidement des AWS Lambda fonctions, des fonctions Lambda durables, Amazon API APIs Gateway, des tables Amazon DynamoDB et d'autres ressources sans serveur avec un minimum de code.
+ **CloudFormation amélioration :** vous pouvez combiner SAM avec des CloudFormation modèles existants pour ajouter des composants sans serveur à l'infrastructure traditionnelle. Les ressources SAM fonctionnent aux côtés CloudFormation des ressources standard dans le même modèle.
+ **Développement et tests locaux :** vous pouvez utiliser le SAM CLI pour tester les fonctions Lambda localement, simuler les points de terminaison API Gateway et déboguer des applications sans serveur sur votre machine de développement avant de les déployer sur. AWS
+ **CI/CD pour le mode sans serveur :** vous pouvez créer des pipelines de déploiement à l'aide de modèles SAM qui génèrent automatiquement l' CloudFormation infrastructure nécessaire aux environnements de préparation et de production.
+ **Migration à partir de ressources créées par la console :** vous pouvez convertir les fonctions Lambda et les ressources API Gateway créées dans la console de AWS gestion en infrastructure sous forme de code à l'aide de modèles SAM.

**Comparaison AWS SAM avec d'autres outils IaC**
+ Utilisez SAM plutôt que CloudFormation pour simplifier les définitions des ressources sans serveur tout en préservant la compatibilité des modèles.
+ Utilisez SAM plutôt que AWS CDK si vous préférez une approche déclarative pour décrire votre infrastructure plutôt qu'une approche programmatique.
+ Combinez SAM avec AWS CDK les fonctionnalités de test locales de SAM CLI pour améliorer vos applications CDK.

## Fonctions principales
<a name="what-is-sam-feature"></a>

AWS SAM offre de nombreux avantages qui améliorent l'expérience des développeurs en vous permettant de : 

**Définir rapidement le code de votre infrastructure d'applications en utilisant moins de code**  
Créez des AWS SAM modèles pour définir le code de votre infrastructure d'applications sans serveur. Déployez vos modèles directement CloudFormation pour provisionner vos ressources.

**Gérer vos applications sans serveur tout au long de leur cycle de développement**  
Utilisez la CLI  AWS SAM pour gérer votre application sans serveur tout au long des phases de création, de construction, de déploiement, de test et de surveillance de votre cycle de vie de développement. Pour de plus amples informations, veuillez consulter [AWS SAM CLI](using-sam-cli.md).

**Attribuez rapidement des autorisations entre les ressources à l'aide de AWS SAM connecteurs**  
Utilisez des AWS SAM connecteurs dans vos AWS SAM modèles pour définir les autorisations entre vos AWS ressources. AWS SAM transforme votre code en autorisations IAM requises pour faciliter votre intention. Pour de plus amples informations, veuillez consulter [Gestion des autorisations relatives aux ressources à l'aide de AWS SAM connecteurs](managing-permissions-connectors.md).

**Synchroniser en continu les modifications locales dans le cloud au fur et à mesure de votre développement**  
Utilisez la AWS SAMCLI **sam sync** commande pour synchroniser automatiquement les modifications locales dans le cloud, accélérant ainsi vos flux de travail de développement et de test dans le cloud. Pour de plus amples informations, veuillez consulter [Présentation de l'utilisation sam sync de la synchronisation avec AWS Cloud](using-sam-cli-sync.md).

**Gérer vos applications Terraform sans serveur**  
Utilisez la CLI  AWS SAM pour effectuer un débogage et des tests locaux de vos fonctions et couches Lambda. Pour de plus amples informations, veuillez consulter [Prise en charge de Terraform par la CLI AWS SAM](terraform-support.md).

## Informations connexes
<a name="w2aab5c15"></a>
+ Pour plus d'informations sur le AWS SAM fonctionnement, voir[Comment AWS SAM fonctionne](what-is-sam-overview.md).
+ Pour commencer à utiliser AWS SAM, voir[Commencer avec AWS SAM](serverless-getting-started.md). 
+ Pour une vue d'ensemble de la manière dont vous pouvez AWS SAM créer une application sans serveur, consultez[Comment utiliser AWS SAM](chapter-using-sam.md#chapter-using-sam.title).

# Comment AWS SAM fonctionne
<a name="what-is-sam-overview"></a>

Lorsque vous créez votre application sans serveur, vous allez interagir avec les composants suivants : AWS SAM 

1. **[AWS SAM modèle](sam-specification.md)**— Un fichier important qui définit vos AWS ressources. Ce modèle inclut la **spécification du AWS SAM modèle**, le framework open source fourni avec une syntaxe abrégée simplifiée que vous utilisez pour définir les fonctions, les événements APIs, les configurations et les autorisations de votre application sans serveur. Ce fichier se trouve dans le AWS SAM projet, qui est le dossier de l'application créé lorsque vous exécutez la **sam init** commande.

1. **[AWS SAM CLI](using-sam-cli.md)**— Un outil de ligne de commande que vous pouvez utiliser avec votre AWS SAM projet et les intégrations tierces prises en charge pour créer et exécuter vos applications sans serveur. AWS SAMCLIIl s'agit de l'outil que vous utilisez pour exécuter des commandes sur votre AWS SAM projet et éventuellement le transformer en application sans serveur.

Pour exprimer les ressources, les mappages de sources d'événements et les autres propriétés qui définissent votre application sans serveur, vous définissez les ressources et développez votre application dans le AWS SAM modèle et dans d'autres fichiers de votre AWS SAM projet. Vous utilisez le AWS SAMCLI pour exécuter des commandes sur votre AWS SAM projet, c'est-à-dire pour initialiser, créer, tester et déployer votre application sans serveur.

**Vous débutez dans le monde du sans serveur ?**  
Nous vous recommandons de passer en revue[Concepts sans serveur pour AWS Serverless Application Model](what-is-concepts.md).

## Quelle est la spécification du AWS SAM modèle ?
<a name="what-is-sam-template-spec"></a>

La spécification du AWS SAM modèle est un framework open source que vous pouvez utiliser pour définir et gérer le code de votre infrastructure d'applications sans serveur. La spécification du AWS SAM modèle est la suivante :
+ **Construit sur AWS CloudFormation** : vous utilisez la CloudFormation syntaxe directement dans votre AWS SAM modèle, en tirant parti de sa prise en charge étendue des configurations de ressources et de propriétés. Si vous le connaissez déjà CloudFormation, vous n'avez pas besoin de vous familiariser avec un nouveau service pour gérer le code de votre infrastructure d'applications.
+ **Une extension de CloudFormation** — AWS SAM propose sa propre syntaxe unique qui vise spécifiquement à accélérer le développement sans serveur. Vous pouvez utiliser à la fois la AWS SAM syntaxe CloudFormation et dans le même modèle.
+ **Une syntaxe abstraite et abrégée** : en utilisant la syntaxe AWS SAM , vous pouvez définir votre infrastructure rapidement, en moins de lignes de code et avec moins de risques d'erreurs. Sa syntaxe est spécialement conçue pour faire abstraction de la complexité de la définition de votre infrastructure d'application sans serveur.
+ **Transformationnel** : AWS SAM effectue le travail complexe de transformation de votre modèle en code nécessaire au provisionnement de votre infrastructure. CloudFormation

## Quels sont le AWS SAM projet et le AWS SAM modèle ?
<a name="what-is-sam-template"></a>

Le AWS SAM projet inclut le AWS SAM modèle qui contient la spécification du AWS SAM modèle. Cette spécification est le framework open source que vous utilisez pour définir votre infrastructure d'applications sans serveur AWS, avec certains composants supplémentaires qui facilitent leur utilisation. En ce sens, les AWS SAM modèles sont une extension des CloudFormation modèles.

Voici un exemple d'application de base sans serveur. Cette application traite les demandes d'obtention de tous les éléments d'une base de données via une requête HTTP. Elle se compose des éléments suivants :

1. Une fonction qui contient la logique de traitement de la demande.

1. Une API HTTP pour servir de communication entre le client (demandeur) et l'application.

1. Une base de données pour stocker les articles.

1. Des autorisations permettant à l'application de s'exécuter en toute sécurité.

![\[Une architecture d'application d'une application simple sans serveur.\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/what-is-sam-06.png)


Le code d'infrastructure de cette application peut être défini dans le modèle AWS SAM suivant :

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Resources:
  getAllItemsFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: src/get-all-items.getAllItemsHandler
      Runtime: nodejs20.x
      Events:
        Api:
          Type: HttpApi
          Properties:
            Path: /
            Method: GET
    Connectors:
      MyConn:
        Properties:
          Destination:
            Id: SampleTable
          Permissions:
            - Read
  SampleTable:
    Type: AWS::Serverless::SimpleTable
```

En 23 lignes de code, l'infrastructure suivante est définie :
+ Fonction utilisant le AWS Lambda service.
+ Une API HTTP utilisant le service Amazon API Gateway.
+ Une base de données utilisant le service Amazon DynamoDB.
+ Les autorisations Gestion des identités et des accès AWS (IAM) nécessaires pour que ces services interagissent les uns avec les autres.

Pour provisionner cette infrastructure, le modèle est déployé sur CloudFormation. Lors du déploiement, AWS SAM transforme les 23 lignes de code en la CloudFormation syntaxe requise pour générer ces ressources dans AWS. Le CloudFormation modèle transformé contient plus de 200 lignes de code \$1

### CloudFormation Modèle transformé
<a name="what-is-sam-template-example-cfn"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "getAllItemsFunction": {
      "Type": "AWS::Lambda::Function",
      "Metadata": {
        "SamResourceId": "getAllItemsFunction"
      },
      "Properties": {
        "Code": {
          "S3Bucket": "amzn-s3-demo-source-bucket-1a4x26zbcdkqr",
          "S3Key": "what-is-app/a6f856abf1b2c4f7488c09b367540b5b"
        },
        "Handler": "src/get-all-items.getAllItemsHandler",
        "Role": {
          "Fn::GetAtt": [
            "getAllItemsFunctionRole",
            "Arn"
          ]
        },
        "Runtime": "nodejs12.x",
        "Tags": [
          {
            "Key": "lambda:createdBy",
            "Value": "SAM"
          }
        ]
      }
    },
    "getAllItemsFunctionRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Action": [
                "sts:AssumeRole"
              ],
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "lambda.amazonaws.com"
                ]
              }
            }
          ]
        },
        "ManagedPolicyArns": [
          "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
        ],
        "Tags": [
          {
            "Key": "lambda:createdBy",
            "Value": "SAM"
          }
        ]
      }
    },
    "getAllItemsFunctionApiPermission": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Ref": "getAllItemsFunction"
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Sub": [
            "arn:${AWS::Partition}:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/",
            {
              "__ApiId__": {
                "Ref": "ServerlessHttpApi"
              },
              "__Stage__": "*"
            }
          ]
        }
      }
    },
    "ServerlessHttpApi": {
      "Type": "AWS::ApiGatewayV2::Api",
      "Properties": {
        "Body": {
          "info": {
            "version": "1.0",
            "title": {
              "Ref": "AWS::StackName"
            }
          },
          "paths": {
            "/": {
              "get": {
                "x-amazon-apigateway-integration": {
                  "httpMethod": "POST",
                  "type": "aws_proxy",
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${getAllItemsFunction.Arn}/invocations"
                  },
                  "payloadFormatVersion": "2.0"
                },
                "responses": {}
              }
            }
          },
          "openapi": "3.0.1",
          "tags": [
            {
              "name": "httpapi:createdBy",
              "x-amazon-apigateway-tag-value": "SAM"
            }
          ]
        }
      }
    },
    "ServerlessHttpApiApiGatewayDefaultStage": {
      "Type": "AWS::ApiGatewayV2::Stage",
      "Properties": {
        "ApiId": {
          "Ref": "ServerlessHttpApi"
        },
        "StageName": "$default",
        "Tags": {
          "httpapi:createdBy": "SAM"
        },
        "AutoDeploy": true
      }
    },
    "SampleTable": {
      "Type": "AWS::DynamoDB::Table",
      "Metadata": {
        "SamResourceId": "SampleTable"
      },
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "id",
            "AttributeType": "S"
          }
        ],
        "KeySchema": [
          {
            "AttributeName": "id",
            "KeyType": "HASH"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST"
      }
    },
    "getAllItemsFunctionMyConnPolicy": {
      "Type": "AWS::IAM::ManagedPolicy",
      "Metadata": {
        "aws:sam:connectors": {
          "getAllItemsFunctionMyConn": {
            "Source": {
              "Type": "AWS::Serverless::Function"
            },
            "Destination": {
              "Type": "AWS::Serverless::SimpleTable"
            }
          }
        }
      },
      "Properties": {
        "PolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "dynamodb:GetItem",
                "dynamodb:Query",
                "dynamodb:Scan",
                "dynamodb:BatchGetItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:PartiQLSelect"
              ],
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "SampleTable",
                    "Arn"
                  ]
                },
                {
                  "Fn::Sub": [
                    "${DestinationArn}/index/*",
                    {
                      "DestinationArn": {
                        "Fn::GetAtt": [
                          "SampleTable",
                          "Arn"
                        ]
                      }
                    }
                  ]
                }
              ]
            }
          ]
        },
        "Roles": [
          {
            "Ref": "getAllItemsFunctionRole"
          }
        ]
      }
    }
  }
}
```

En utilisant AWS SAM, vous définissez 23 lignes de code d'infrastructure. AWS SAM transforme votre code en plus de 200 lignes de CloudFormation code nécessaires au provisionnement de votre application.

## Qu'est-ce que c'est AWS SAMCLI ?
<a name="what-is-sam-cli"></a>

 AWS SAMCLIIl s'agit d'un outil de ligne de commande que vous pouvez utiliser avec des AWS SAM modèles et des intégrations tierces prises en charge pour créer et exécuter vos applications sans serveur. Utilisez la CLI  AWS SAM pour :
+ Initialiser rapidement un nouveau projet d'application.
+ Créer votre application pour le déploiement.
+ Effectuer le débogage et les tests au niveau local.
+ Déployez votre application.
+ Configurez les pipelines de CI/CD déploiement.
+ Surveiller et dépanner votre application dans le cloud.
+ Synchroniser les modifications locales dans le cloud au fur et à mesure de votre développement.
+ Et bien plus encore \$1

 AWS SAMCLIIl est préférable de l'utiliser avec AWS SAM des CloudFormation modèles. Elle fonctionne également avec des produits tiers tels que Terraform.

### Initialiser un nouveau projet
<a name="what-is-sam-cli-init"></a>

Sélectionnez des modèles de départ ou choisissez un emplacement de modèle personnalisé pour commencer un nouveau projet.

Ici, nous utilisons la commande **sam init** pour initialiser un nouveau projet d'application. Nous sélectionnons le projet **Hello World Example** pour commencer. La CLI  AWS SAM télécharge un modèle de démarrage et crée la structure de répertoires de dossiers de notre projet. 

![\[Utilisation de la commande sam init pour démarrer un nouveau projet d'application avec la CLI  AWS SAM.\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/what-is-sam-01.gif)


Pour en savoir plus, consultez [Créez votre application dans AWS SAM](using-sam-cli-init.md).

### Créer votre application pour le déploiement
<a name="what-is-sam-cli-build"></a>

Regroupez les dépendances de vos fonctions et organisez le code de votre projet et la structure de dossiers pour préparer le déploiement.

Ici, nous utilisons la commande **sam build** pour préparer notre application en vue du déploiement. La CLI  AWS SAM crée un répertoire `.aws-sam` et organise les dépendances et les fichiers de nos applications pour le déploiement.

![\[Utilisation de la commande sam build pour préparer une application pour le déploiement.\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/what-is-sam-02.gif)


Pour en savoir plus, consultez [Créez votre application](serverless-building.md).

### Effectuer le débogage et les tests au niveau local
<a name="what-is-sam-cli-local"></a>

Sur votre machine locale, simulez des événements, testez APIs, invoquez des fonctions, etc. pour déboguer et tester votre application.

Ici, nous utilisons la commande **sam local invoke** pour appeler notre `HelloWorldFunction` localement. Pour ce faire, la CLI  AWS SAM crée un conteneur local, crée notre fonction, l'invoque et affiche les résultats. Vous pouvez utiliser une application telle que Docker pour exécuter des conteneurs sur votre machine.

![\[Utiliser la AWS SAMCLI sam local invoke commande pour appeler localement une fonction.\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/what-is-sam-04.gif)


Pour de plus amples informations, veuillez consulter [Testez votre application](serverless-test-and-debug.md) et [Déboguez votre application](debug-application.md).

### Déploiement de votre application
<a name="what-is-sam-cli-deploy"></a>

Configurez les paramètres de déploiement de votre application et déployez-la AWS dans le cloud pour provisionner vos ressources.

Ici, nous utilisons la commande **sam deploy --guided** pour déployer notre application via un flux interactif. Il nous AWS SAMCLI guide dans la configuration des paramètres de déploiement de notre application, transforme notre modèle en CloudFormation et le déploie CloudFormation pour créer nos ressources.

![\[Utilisation de la AWS SAMCLI sam deploy commande pour déployer une application dans le AWS cloud.\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/what-is-sam-03.gif)


Pour en savoir plus, consultez [Déployez votre application et vos ressources](serverless-deploying.md).

### Configuration des pipelines CI/CD de déploiement
<a name="what-is-sam-cli-cicd"></a>

Créez des pipelines sécurisés *d'intégration et de livraison continues (CI/CD)* à l'aide d'un système compatible CI/CD .

Ici, nous utilisons la commande **sam pipeline init --bootstrap** pour configurer un pipeline de déploiement CI/CD pour notre application. Il nous AWS SAMCLI guide à travers nos options et génère les AWS ressources et le fichier de configuration à utiliser avec notre système CI/CD.

![\[Utilisation de la AWS SAMCLI sam pipeline init --bootstrap commande pour configurer un CI/CD pipeline avec notre CI/CD système préféré.\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/what-is-sam-07.gif)


Pour en savoir plus, consultez [Déployez avec CI/CD des systèmes et des pipelines](deploying-options.md#serverless-deploying-ci-cd).

### Surveiller et dépanner votre application dans le cloud
<a name="what-is-sam-cli-monitor"></a>

Consultez les informations importantes sur vos ressources déployées, collectez les journaux et utilisez les outils de surveillance intégrés tels que AWS X-Ray.

Ici, nous utilisons la commande **sam list** pour visualiser nos ressources déployées. Nous obtenons le point de terminaison de notre API et l'appelons, ce qui déclenche notre fonction. Ensuite, nous l'utilisons **sam logs** pour consulter les journaux de nos fonctions.

![\[Utilisation de la AWS SAMCLI sam list commande pour obtenir notre point de terminaison d'API. Ensuite, sam logs est utilisé pour consulter les journaux de nos fonctions.\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/what-is-sam-08.gif)


Pour en savoir plus, consultez [Surveillez votre application](serverless-monitoring.md).

### Synchroniser les modifications locales dans le cloud au fur et à mesure de votre développement
<a name="what-is-sam-cli-sync"></a>

Au fur et à mesure que vous développez sur votre ordinateur local, synchronisez automatiquement les modifications dans le cloud. Visualisez rapidement vos modifications et effectuez des tests et des validations dans le cloud.

Ici, nous utilisons la commande **sam sync --watch** pour que la CLI  AWS SAM surveille les modifications locales. Nous modifions notre code `HelloWorldFunction` et la CLI  AWS SAM détecte automatiquement la modification et déploie nos mises à jour dans le cloud. 

![\[Utilisation de la AWS SAMCLI sam sync commande pour synchroniser les modifications locales dans le AWS Cloud.\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/what-is-sam-05.gif)


### Testez les ressources prises en charge dans le cloud
<a name="what-is-sam-cli-remote-invoke"></a>

Invoquez et transmettez des événements aux ressources prises en charge dans le cloud.

Ici, nous utilisons la commande **sam remote invoke** pour tester une fonction Lambda déployée dans le cloud. Nous appelons notre fonction Lambda et recevons ses journaux et sa réponse. Notre fonction Lambda étant configurée pour diffuser les réponses, la CLI  AWS SAM diffuse sa réponse en temps réel.

![\[Utilisation de la AWS SAMCLI sam remote invoke commande pour tester notre fonction déployée dans le AWS cloud.\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/what-is-sam-09.gif)


## En savoir plus
<a name="what-is-sam-learn"></a>

Pour en savoir plus AWS SAM, consultez les ressources suivantes :
+ **[L' AWS SAM atelier complet](https://s12d.com/sam-ws-en-intro)** — Un atelier conçu pour vous enseigner les nombreuses fonctionnalités principales qu'il AWS SAM fournit.
+ **[Sessions avec SAM](https://www.youtube.com/playlist?list=PLJo-rJlep0ED198FJnTzhIB5Aut_1vDAd)** — Série de vidéos créée par notre équipe AWS Serverless Developer Advocate sur l'utilisation AWS SAM.
+ **[Serverless Land](https://serverlessland.com/)** : site qui rassemble les dernières informations, blogs, vidéos, codes et ressources d'apprentissage pour le AWS sans-serveur.

## Étapes suivantes
<a name="what-is-sam-next"></a>

Si c'est la première fois que vous l'utilisez AWS SAM, consultez[Commencer avec AWS SAM](serverless-getting-started.md).

# Concepts sans serveur pour AWS Serverless Application Model
<a name="what-is-concepts"></a>

Découvrez les concepts de base du mode sans serveur avant d'utiliser le AWS Serverless Application Model (AWS SAM).

## Concepts sans serveur
<a name="what-is-concepts-terms"></a>

**Architecture basée sur les événements**  <a name="what-is-concepts-terms-eda"></a>
Une application sans serveur comprend des AWS services individuels, tels que AWS Lambda pour le calcul et Amazon DynamoDB pour la gestion des bases de données, qui jouent chacun un rôle spécialisé. Ces services sont ensuite librement intégrés les uns aux autres par le biais d'une architecture basée sur les événements. Pour en savoir plus sur l'architecture basée sur les événements, consultez [Qu'est-ce qu'une architecture basée sur les événements ?](https://aws.amazon.com/event-driven-architecture/). 

**Infrastructure en tant que code (IaC)**  <a name="what-is-concepts-terms-iac"></a>
L'infrastructure en tant que code (IaC) permet de traiter l'infrastructure de la même manière que les développeurs traitent le code, en appliquant la même rigueur que le développement du code d'application à l'approvisionnement de l'infrastructure. Vous définissez votre infrastructure dans un fichier modèle, vous la déployez et vous AWS créez les ressources pour vous. AWS Avec IaC, vous définissez dans le code ce que vous AWS souhaitez provisionner. Pour une comparaison des outils IaC disponibles pour AWS, voir[Infrastructure en tant que code (IaC)](what-is-iac.md).

**Technologies sans serveur**  <a name="what-is-concepts-terms-serverless"></a>
Grâce aux technologies AWS sans serveur, vous pouvez créer et exécuter des applications sans avoir à gérer vos propres serveurs. L'ensemble de la gestion des serveurs est assuré par AWS ce qui offre de nombreux avantages tels que le dimensionnement automatique et la haute disponibilité intégrée, ce qui vous permet de mettre rapidement votre idée en production. Grâce aux technologies sans serveur, vous pouvez vous concentrer sur l'essentiel de votre produit sans avoir à vous soucier de la gestion et de l'exploitation des serveurs. Pour en savoir plus sur le sans serveur, consultez les informations suivantes :  
+ [Sans serveur activé AWS](https://aws.amazon.com/serverless/)
+ [Guide du développeur sans serveur](https://docs.aws.amazon.com/serverless/latest/devguide/serverless-preface.html) : fournit une présentation conceptuelle du développement sans serveur dans le Cloud AWS .
*Pour une introduction de base aux principaux services AWS sans serveur, voir [Serverless 101 : Understanding the serverless services at Serverless Land](https://serverlessland.com/learn/serverless-101).*

**Application sans serveur**  <a name="what-is-concepts-terms-serverless"></a>
Lorsque vous utilisez AWS SAM, vous gérez les ressources associées dans une application, qui comprend votre AWS SAM projet et votre modèle. Toutes les ressources de votre application sont définies ou référencées dans votre AWS SAM modèle. Lorsque vous AWS SAM traitez votre modèle, il crée CloudFormation des ressources. Dans CloudFormation, les ressources sont gérées dans une seule unité appelée pile, et toutes les ressources d'une pile sont définies par le CloudFormation modèle de la pile.

# Infrastructure en tant que code (IaC)
<a name="what-is-iac"></a>

Avec l'infrastructure en tant que code (IaC), vous pouvez automatiser le déploiement et la gestion de vos AWS ressources, y compris les applications sans serveur. IaC vous permet de définir votre infrastructure à l'aide de code, ce qui facilite la création de versions, le partage et la réplication de vos déploiements. Cette approche vous permet de :
+ Accélérez votre cycle de développement
+ Simplifier la gestion des configurations
+ Améliorez la fiabilité et la cohérence de vos déploiements

## Outils IaC pour les AWS applications sans serveur
<a name="iac-tools-aws"></a>

AWS propose plusieurs outils IaC pour vous aider à créer, déployer et gérer vos ressources cloud. Cette section explique comment AWS SAM s'intègre à cet écosystème et fonctionne avec d'autres outils AWS IaC.

**AWS CloudFormation**  
À l'aide de modèles YAML ou JSON [CloudFormation](https://aws.amazon.com/cloudformation/), vous pouvez modéliser et approvisionner l'ensemble de votre AWS infrastructure. CloudFormation gère automatiquement la création, la mise à jour et la suppression des ressources. Lorsque vous déployez AWS SAM des applications, CloudFormation traitez les modèles transformés pour créer et gérer vos ressources.

**AWS Serverless Application Model (AWS SAM)**  
AWS SAM vous aide à créer des applications sans serveur avec une syntaxe simplifiée pour définir les ressources sans serveur. Vous pouvez utiliser des AWS SAM modèles pour configurer des fonctions Lambda APIs, des bases de données et des sources d'événements à l'aide d'une syntaxe YAML concise. AWS SAM transforme ces modèles en CloudFormation modèles lors du déploiement.  
Bien que vous soyez AWS SAM spécialisé dans les applications sans serveur, vous pouvez utiliser tous les types de CloudFormation ressources dans vos AWS SAM modèles. Cela vous donne la flexibilité d'inclure des ressources non sans serveur en cas de besoin.

**AWS Kit de développement Cloud (AWS CDK)**  
Avec [AWS CDK](https://aws.amazon.com/cdk/), vous pouvez définir votre infrastructure sans serveur à l'aide de langages de programmation courants tels que Python TypeScript, Java, C\$1/.Net ou Go. Vous pouvez utiliser des structures de programmation telles que des boucles et des conditions pour définir votre infrastructure et AWS CDK générer des CloudFormation modèles pour le déploiement. Vous pouvez utiliser le AWS SAMCLI pour tester et déboguer localement les applications créées avec AWS CDK. Pour en savoir plus, consultez [Tester les applications CDK localement.](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html)

## Comparaison des outils IaC pour les applications sans serveur
<a name="comparing-iac-tools"></a>

Lorsque vous choisissez un outil IaC pour vos applications sans serveur, tenez compte des préférences de votre équipe, des exigences du projet et des flux de travail existants. Le tableau suivant compare les principales caractéristiques des outils AWS IaC pour le développement sans serveur :


| **Outil** | **Utilisation principale** | **Idéal pour** | **Fonctionne avec AWS SAM** | **Quand choisir** | 
| --- | --- | --- | --- | --- | 
| **CloudFormation** | Gestion d'une AWS infrastructure complexe | Applications nécessitant un contrôle détaillé des AWS ressources | AWS SAM les modèles se transforment en CloudFormation modèles lors du déploiement | Pour un contrôle précis des ressources non sans serveur | 
| **AWS SAM** | Développement d'applications sans serveur | Équipes développant des applications sans serveur à l'aide de Lambda | Fonctionnalité native | Lorsque vous vous concentrez principalement sur des architectures sans serveur dotées de fonctions Lambda, d'API APIs Gateway et d'autres ressources sans serveur | 
| **AWS CDK** | Définition d'infrastructures à l'aide de langages de programmation | Équipes privilégiant les langages dactylographiés et l'approche axée sur le code | Générer des AWS SAM modèles et les utiliser AWS SAMCLI pour les tests | Lorsque vous avez besoin d'une définition d'infrastructure programmatique ou d'une logique de configuration de ressources complexe | 

**Note**  
Bien que ce guide se concentre sur les outils iAc AWS natifs, Terraform est une autre solution IaC populaire qui peut être utilisée pour définir des applications sans serveur. Il AWS SAMCLI prend en charge les tests locaux des fonctions Lambda définies dans Terraform. Pour de plus amples informations, veuillez consulter [Prise en charge de Terraform par la CLI AWS SAM](terraform-support.md).

## En savoir plus
<a name="iac-learn-more"></a>
+ Pour en savoir plus sur AWS les DevOps pratiques [en DevOps matière](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) de AWS
+ Pour plus d'informations sur l'utilisation de Lambda avec différents outils IaC, voir Utilisation de [Lambda avec une infrastructure en tant que](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac.html) code (iAc)