

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.

# AWS Lambda
<a name="lambda-index"></a>

Développez et déployez vos fonctions Lambda C\$1 basées sur .NET Core avec le. AWS Toolkit for Visual Studio AWS Lambda est un service de calcul qui vous permet d'exécuter du code sans provisionner ni gérer de serveurs. Le Toolkit for Visual Studio inclut des modèles de projet AWS Lambda .NET Core pour Visual Studio. 

Pour plus d'informations AWS Lambda, consultez le guide du développeur [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html).

Pour plus d'informations sur .NET Core, consultez le guide Microsoft [.NET Core](https://docs.microsoft.com/en-us/dotnet/articles/core/). Pour obtenir les prérequis et les instructions d'installations de .NET Core concernant les plateformes Windows, macOS et Linux, consultez [Téléchargements .NET Core](https://www.microsoft.com/net/download/core).

Les rubriques suivantes décrivent comment AWS Lambda utiliser le Toolkit for Visual Studio.

**Topics**
+ [AWS Lambda Projet de base](lambda-creating-project-in-visual-studio.md)
+ [AWS Lambda Projet de base : création d'une image Docker](lambda-creating-project-docker-image.md)
+ [Tutoriel : Création et test d'une application sans serveur avec AWS Lambda](lambda-build-test-severless-app.md)
+ [Didacticiel : Création d'une application Lambda Amazon Rekognition](lambda-rekognition-example.md)
+ [Tutoriel : Utilisation d'Amazon Logging Frameworks AWS Lambda pour créer des journaux d'applications](cw-log-frameworks.md)

# AWS Lambda Projet de base
<a name="lambda-creating-project-in-visual-studio"></a>

Vous pouvez créer une fonction Lambda à l'aide de modèles de projet Microsoft .NET Core, dans le. AWS Toolkit for Visual Studio

## Création d'un projet Lambda Visual Studio .NET Core
<a name="create-a-visual-studio-net-core-lam-project"></a>

Vous pouvez utiliser les modèles et les plans Lambda-Visual Studio pour accélérer l'initialisation de votre projet. Les plans Lambda contiennent des fonctions prédéfinies qui simplifient la création d'une base de projet flexible.

**Note**  
Le service Lambda impose des limites de données pour différents types de packages. Pour des informations détaillées sur les limites de données, consultez la rubrique [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dans le Guide de l'utilisateur *AWS Lambda*.

**Pour créer un projet Lambda dans Visual Studio**

1. Dans Visual Studio, développez le menu **Fichier**, développez **Nouveau**, puis choisissez **Projet**.

1. Dans la boîte de dialogue **Nouveau projet**, définissez les **listes déroulantes Langue**, **plate-forme** et **type de projet** sur « Tous », puis saisissez le **aws lambda** texte dans le champ **Rechercher**. Choisissez le modèle **AWS Lambda Project (.NET Core - C\$1**).

1. Dans le champ **Nom**, entrez**AWSLambdaSample**, spécifiez l'**emplacement** du fichier souhaité, puis choisissez **Créer** pour continuer.

1. Sur la page **Sélectionner un plan**, sélectionnez le plan de **fonction vide**, puis choisissez **Terminer** pour créer le projet Visual Studio.

## Vérification des fichiers du projet
<a name="review-the-project-files"></a>

Il y a deux dossiers de projet à examiner : `aws-lambda-tools-defaults.json` et`Function.cs`.

L'exemple suivant montre le `aws-lambda-tools-defaults.json` fichier, qui est automatiquement créé dans le cadre de votre projet. Vous pouvez définir les options de construction à l'aide des champs de ce fichier. 

**Note**  
 Les modèles de projet dans Visual Studio contiennent de nombreux champs différents, prenez note des points suivants :  
**function-handler** : spécifie la méthode qui s'exécute lorsque la fonction Lambda s'exécute
La spécification d'une valeur dans le champ du **gestionnaire de fonctions** préremplit cette valeur dans l'assistant de publication.
Si vous renommez la fonction, la classe ou l'assemblage, vous devez également mettre à jour le champ correspondant dans le `aws-lambda-tools-defaults.json` fichier.

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "function-architecture": "x86_64",
  "function-runtime": "dotnet8",
  "function-memory-size": 512,
  "function-timeout": 30,
  "function-handler": "AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler"
}
```

Examinez le `Function.cs` fichier. `Function.cs`définit les fonctions c\$1 à exposer en tant que fonctions Lambda. Il s'`FunctionHandler`agit de la fonctionnalité Lambda qui s'exécute lorsque la fonction Lambda est exécutée. Dans ce projet, une fonction est définie :`FunctionHandler`, qui fait appel `ToUpper()` au texte saisi. 

Votre projet est maintenant prêt à être publié sur Lambda.

## Publier sur Lambda
<a name="publish-to-lam"></a>

La procédure et l'image suivantes montrent comment télécharger votre fonction sur Lambda à l'aide du. AWS Toolkit for Visual Studio

![\[Page Invoquer la fonction de test\]](http://docs.aws.amazon.com/fr_fr/toolkit-for-visual-studio/latest/user-guide/images/uploadnet8.png)


**Publication de votre fonction sur Lambda**

1. Accédez à l' AWS explorateur en développant **View** et en choisissant **AWS Explorer**.

1. Dans l'**explorateur de solutions**, ouvrez le menu contextuel (cliquez avec le bouton droit) du projet que vous souhaitez publier, puis choisissez **Publier sur AWS Lambda pour** ouvrir la fenêtre Upload **Lambda Function**.

1. Dans la fenêtre **Upload Lambda Function**, renseignez les champs suivants :

   1. **Type de package** : Choisissez**Zip**. Un fichier ZIP sera créé à la suite du processus de construction et sera téléchargé sur Lambda. Vous pouvez également choisir le **type de package****Image**. **Le [didacticiel : Basic Lambda Project Creating Docker Image](lambda-creating-project-docker-image.md) décrit comment publier à l'aide du type de package.** **Image**

   1. **Lambda Runtime** : Choisissez votre Lambda Runtime dans le menu déroulant.

   1. **Architecture** : sélectionnez le radial correspondant à votre architecture préférée.

   1. **Nom de la fonction** : sélectionnez le radial pour **Créer une nouvelle fonction**, puis entrez un nom d'affichage pour votre instance Lambda. Ce nom est référencé à la fois par l' AWS explorateur et par AWS Management Console les écrans.

   1. **Gestionnaire** : utilisez ce champ pour spécifier un gestionnaire de fonctions. Par exemple : **AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler**.

   1. *(Facultatif)* **Description** : entrez le texte descriptif à afficher avec votre instance, depuis le AWS Management Console.

   1. **Configuration** : Choisissez votre configuration préférée dans le menu déroulant.

   1. **Cadre** : choisissez votre cadre préféré dans le menu déroulant.

   1. **Enregistrer les paramètres** : cochez cette case pour enregistrer vos paramètres actuels `aws-lambda-tools-defaults.json` comme paramètres par défaut pour les futurs déploiements.

   1. Choisissez **Suivant** pour accéder à la fenêtre **Détails des fonctions avancées**.

1. Dans la fenêtre **Détails des fonctions avancées**, renseignez les champs suivants :

   1. **Nom du rôle** : Choisissez un rôle associé à votre compte. Le rôle fournit des informations d'identification temporaires pour tous les appels de AWS service effectués par le code de la fonction. Si vous n'avez pas de rôle, faites défiler la page jusqu'à trouver **Nouveau rôle basé sur la politique AWS gérée** dans le sélecteur déroulant, puis choisissez **AWSLambdaBasicExecutionRole**. Ce rôle dispose d'autorisations d'accès minimales. 
**Note**  
Votre compte doit être autorisé à exécuter l' ListPolicies action IAM, sinon la liste des **noms de rôle** sera vide et vous ne pourrez pas continuer.

   1. *(Facultatif)* Si votre fonction Lambda accède aux ressources d'un Amazon VPC, sélectionnez les sous-réseaux et les groupes de sécurité.

   1. *(Facultatif)* Définissez les variables d'environnement dont votre fonction Lambda a besoin. Les clés sont automatiquement cryptées par la clé de service par défaut qui est gratuite. Vous pouvez également spécifier une AWS KMS clé payante. [KMS](https://aws.amazon.com/kms/) est un service géré qui permet de créer et contrôler les clés de chiffrement utilisées pour chiffrer vos données. Si vous avez une AWS KMS clé, vous pouvez la sélectionner dans la liste.

1. Choisissez **Upload** pour ouvrir la fenêtre de la **fonction de téléchargement** et commencer le processus de téléchargement.
**Note**  
La page **Fonction de téléchargement** s'affiche lorsque la fonction est en cours de téléchargement vers. AWS Pour que l'assistant reste ouvert après le téléchargement afin que vous puissiez consulter le rapport, décochez la case **Fermer automatiquement l'assistant en cas de réussite** au bas du formulaire avant la fin du téléchargement.   
Une fois la fonction téléchargée, votre fonction Lambda est active. La page **Function :** view s'ouvre et affiche la configuration de votre nouvelle fonction Lambda.

1. Dans l'onglet **Fonction de test**, entrez `hello lambda!` dans le champ de saisie de texte, puis choisissez **Invoke pour appeler** manuellement votre fonction Lambda. Votre texte apparaît dans l'onglet **Réponse**, converti en majuscules. 
**Note**  
Vous pouvez rouvrir la vue **Function :** à tout moment en double-cliquant sur votre instance déployée située dans l'**AWS explorateur** sous le **AWS Lambda**nœud.  
![\[Page Invoquer la fonction de test\]](http://docs.aws.amazon.com/fr_fr/toolkit-for-visual-studio/latest/user-guide/images/invokeBasic.PNG)

1. *(Facultatif)* Pour vérifier que vous avez correctement publié votre fonction Lambda, connectez-vous au, AWS Management Console puis choisissez Lambda. La console affiche toutes les fonctions Lambda que vous avez publiées, y compris celle que vous venez de créer.

## Nettoyage
<a name="cleanup-lam"></a>

Si vous ne comptez pas poursuivre le développement avec cet exemple, supprimez la fonction que vous avez déployée afin de ne pas être facturée pour les ressources inutilisées de votre compte.

**Note**  
Lambda surveille automatiquement les fonctions Lambda pour vous, en fournissant des statistiques via Amazon. CloudWatch Pour surveiller et résoudre les problèmes liés à votre fonction, consultez la rubrique [Dépannage et surveillance des fonctions AWS Lambda avec CloudWatch Amazon](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html) dans AWS Lambda le Guide du développeur.

**Pour supprimer votre fonction**

1. À partir de l'**AWS explorateur**, développez le **AWS Lambda**nœud.

1. Cliquez avec le bouton droit sur votre instance déployée, puis choisissez **Supprimer**.

# AWS Lambda Projet de base : création d'une image Docker
<a name="lambda-creating-project-docker-image"></a>

Vous pouvez utiliser le Toolkit for Visual Studio pour déployer votre AWS Lambda fonction sous forme d'image Docker. Avec Docker, vous avez plus de contrôle sur votre environnement d'exécution. Par exemple, vous pouvez choisir des environnements d'exécution personnalisés tels que .NET 8.0. Vous déployez votre image Docker de la même manière que n'importe quelle autre image de conteneur. Ce didacticiel est très similaire à [Tutorial : Basic Lambda](lambda-creating-project-in-visual-studio.md) Project, à deux différences près :
+ Un Dockerfile est inclus dans le projet.
+ Une autre configuration de publication est choisie.

*Pour plus d'informations sur les images de conteneurs Lambda, consultez la section [Packages de déploiement Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) dans le guide du développeur.AWS Lambda *

Pour plus d'informations sur l'utilisation de Lambda AWS Toolkit for Visual Studio, consultez la section [Utilisation des AWS Lambda modèles dans la AWS Toolkit for Visual Studio](lambda-index.md) rubrique de ce guide de l'utilisateur.

## Création d'un projet Lambda Visual Studio .NET Core
<a name="create-a-visual-studio-net-core-lam-project"></a>

Vous pouvez utiliser les modèles et les plans Lambda Visual Studio pour accélérer l'initialisation de votre projet. Les plans Lambda contiennent des fonctions prédéfinies qui simplifient la création d'une base de projet flexible.

**Pour créer un projet Lambda Visual Studio .NET Core**

1. Dans Visual Studio, développez le menu **Fichier**, développez **Nouveau**, puis choisissez **Projet**.

1. Dans la boîte de dialogue **Nouveau projet**, définissez les **listes déroulantes Langue**, **plate-forme** et **type de projet** sur « Tous », puis saisissez le **aws lambda** texte dans le champ **Rechercher**. Choisissez le modèle de **projet AWS Lambda (.NET Core - C\$1**).

1. Dans le champ **Nom du projet**, entrez**AWSLambdaDocker**, spécifiez l'**emplacement** de votre fichier, puis choisissez **Créer**.

1. Sur la page **Sélectionner un plan**, choisissez le plan **.NET 8 (image conteneur)**, puis choisissez **Terminer** pour créer le projet Visual Studio. Vous pouvez maintenant vérifier la structure et le code du projet.

## Révision des fichiers de projet
<a name="review-the-project-files"></a>

Les sections suivantes examinent les trois fichiers de projet créés par le plan **.NET 8 (Container Image)** :

1. `Dockerfile`

1. `aws-lambda-tools-defaults.json`

1. `Function.cs`

### 1. Dockerfile
<a name="dockerfile"></a>

A `Dockerfile` exécute trois actions principales :
+ `FROM`: définit l'image de base à utiliser pour cette image. Cette image de base fournit le .NET Runtime, le runtime Lambda et un script shell qui fournit un point d'entrée pour le processus Lambda .NET.
+ `WORKDIR`: définit le répertoire de travail interne de l'image sous la forme`/var/task`.
+ `COPY`: copiera les fichiers générés par le processus de construction depuis leur emplacement local dans le répertoire de travail de l'image.

Les `Dockerfile` actions facultatives que vous pouvez spécifier sont les suivantes :
+ `ENTRYPOINT`: L'image de base inclut déjà un`ENTRYPOINT`, qui est le processus de démarrage exécuté au démarrage de l'image. Si vous souhaitez spécifier le vôtre, vous remplacez ce point d'entrée de base.
+ `CMD`: indique le code personnalisé AWS que vous souhaitez exécuter. Il attend un nom complet pour votre méthode personnalisée. Cette ligne doit être incluse directement dans le Dockerfile ou peut être spécifiée lors du processus de publication. 

  ```
  # Example of alternative way to specify the Lambda target method rather than during the publish process.
  CMD [ "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler"]
  ```

Voici un exemple de Dockerfile créé par le plan .NET 8 (Container Image).

```
FROM public.ecr.aws/lambda/dotnet:8

WORKDIR /var/task

# This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image. 
# The source of the COPY should match where the .NET Lambda project publishes its build artifacts. If the Lambda function is being built 
# with the AWS .NET Lambda Tooling, the `--docker-host-build-output-dir` switch controls where the .NET Lambda project
# will be built. The .NET Lambda project templates default to having `--docker-host-build-output-dir`
# set in the aws-lambda-tools-defaults.json file to "bin/Release/lambda-publish".
#
# Alternatively Docker multi-stage build could be used to build the .NET Lambda project inside the image.
# For more information on this approach checkout the project's README.md file.
COPY "bin/Release/lambda-publish"  .
```

### 2. aws-lambda-tools-defaults.json
<a name="aws-lambda-tools-defaults"></a>

Le `aws-lambda-tools-defaults.json` fichier est utilisé pour spécifier les valeurs par défaut de l'assistant de déploiement de Toolkit for Visual Studio et de la CLI .NET Core. La liste suivante décrit les champs que vous pouvez définir dans votre `aws-lambda-tools-defaults.json` fichier.
+ `profile`: définit votre AWS profil.
+ `region`: définit la AWS région dans laquelle vos ressources sont stockées.
+ `configuration`: définit la configuration utilisée pour publier votre fonction.
+ `package-type`: définit le type de package de déploiement sur une image de conteneur ou une archive de fichier .zip.
+ `function-memory-size`: définit l'allocation de mémoire pour votre fonction en Mo.
+ `function-timeout`: Le délai d'expiration est la durée maximale en secondes pendant laquelle une fonction Lambda peut être exécutée. Vous pouvez l'ajuster par incréments d'une seconde jusqu'à une valeur maximale de 15 minutes.
+ `docker-host-build-output-dir`: définit le répertoire de sortie du processus de construction qui est en corrélation avec les instructions du`Dockerfile`.
+ `image-command`: est le nom complet de votre méthode, le code que vous souhaitez faire exécuter par la fonction Lambda. La syntaxe est la suivante :`{Assembly}::{Namespace}.{ClassName}::{MethodName}`. Pour plus d'informations, consultez la section [Signatures du gestionnaire](https://docs.aws.amazon.com/lambda/latest/dg/csharp-handler.html#csharp-handler-signatures). Cette valeur est préremplie ultérieurement dans l'assistant de publication de Visual Studio. `image-command` 

Voici un exemple de aws-lambda-tools-defaults fichier .json créé par le plan .NET 8 (Container Image).

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "package-type": "image",
  "function-memory-size": 512,
  "function-timeout": 30,
  "image-command": "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler",
  "docker-host-build-output-dir": "./bin/Release/lambda-publish"
}
```

### 3. Function.cs
<a name="w2aac15c45c16c17c21"></a>

Le `Function.cs` fichier définit les fonctions c\$1 à exposer en tant que fonctions Lambda. `FunctionHandler`Il s'agit de la fonctionnalité Lambda qui s'exécute lorsque la fonction Lambda s'exécute. Dans ce projet, `FunctionHandler` fait `ToUpper()` appel au texte saisi. 

## Publier sur Lambda
<a name="publish-to-lam"></a>

Les images Docker générées par le processus de création sont chargées sur Amazon Elastic Container Registry (Amazon ECR). Amazon ECR est un registre de conteneurs Docker entièrement géré que vous utilisez pour stocker, gérer et déployer des images de conteneurs Docker. Amazon ECR héberge l'image, à laquelle Lambda fait ensuite référence pour fournir la fonctionnalité Lambda programmée lorsqu'elle est invoquée. 

**Pour publier votre fonction sur Lambda**

1. Dans l'**explorateur de solutions**, ouvrez le menu contextuel du projet (cliquez avec le bouton droit de la souris), puis choisissez **Publier pour AWS Lambda** ouvrir la fenêtre **Upload Lambda Function**.

1. Sur la page **Upload Lambda Function**, procédez comme suit :  
![\[Écran de téléchargement pour publier la fonction Lambda basée sur des images vers AWS\]](http://docs.aws.amazon.com/fr_fr/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-docker-03192024.png)

   1.  Pour le **type de package**, **Image** il a été automatiquement sélectionné comme **type de package** car l'assistant de publication en a détecté un `Dockerfile` dans votre projet. 

   1. Dans **Nom de la fonction**, entrez un nom d'affichage pour votre instance Lambda. Ce nom est le nom de référence affiché à la fois dans l' AWS explorateur de Visual Studio et dans le AWS Management Console.

   1.  Pour **Description**, entrez le texte à afficher avec votre instance dans le AWS Management Console.

   1. Pour **Image Command**, entrez un chemin complet vers la méthode que vous souhaitez exécuter par la fonction Lambda : **AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler** 
**Note**  
Tout nom de méthode saisi ici remplacera toute instruction CMD dans le Dockerfile. La saisie de **la commande Image** n'est facultative que SI vous `Dockerfile` incluez un `CMD` pour indiquer comment lancer la fonction Lambda.

   1. Pour **Image Repo**, entrez le nom d'un Amazon Elastic Container Registry nouveau ou existant. L'image Docker créée par le processus de génération est téléchargée dans ce registre. La définition Lambda publiée fera référence à cette image Amazon ECR.

   1.  Pour **Image Tag**, entrez une balise Docker à associer à votre image dans le référentiel. 

   1. Choisissez **Suivant**.

1. Sur la page **Détails des fonctions avancées**, dans **Nom du rôle**, choisissez un rôle associé à votre compte. Le rôle est utilisé pour fournir des informations d'identification temporaires pour tous les appels Amazon Web Services effectués par le code de la fonction. Si vous n'avez pas de rôle, choisissez **Nouveau rôle basé sur la politique AWS gérée**, puis choisissez **AWSLambdaBasicExecutionRole**. 
**Note**  
Votre compte doit être autorisé à exécuter l' ListPolicies action IAM, sinon la liste des **noms de rôle** sera vide.

1. Choisissez **Upload** pour démarrer les processus de téléchargement et de publication.
**Note**  
La page de la **fonction de téléchargement** s'affiche pendant le téléchargement de la fonction. Le processus de publication crée ensuite l'image en fonction des paramètres de configuration, crée le référentiel Amazon ECR si nécessaire, télécharge l'image dans le référentiel et crée le Lambda référençant ce dépôt avec cette image.   
Une fois la fonction chargée, la page **Function** s'ouvre et affiche la configuration de votre nouvelle fonction Lambda. 

1. **Pour appeler manuellement la fonction Lambda, dans l'onglet **Fonction de test**, entrez `hello image based lambda` dans le champ de saisie en texte libre de la demande, puis choisissez Invoke.** Votre texte, converti en majuscules, apparaîtra dans **Réponse**.   
![\[L'onglet Fonction de test de la page d'affichage des fonctions publiée contient un bouton permettant d'invoquer manuellement la méthode Lambda.\]](http://docs.aws.amazon.com/fr_fr/toolkit-for-visual-studio/latest/user-guide/images/lambda-invoke-docker-03192024.png)

1. Pour afficher le référentiel, dans l'**AWS explorateur**, sous **Amazon Elastic Container Service**, sélectionnez **Repositories.**

   Vous pouvez rouvrir la vue **Function :** à tout moment en double-cliquant sur votre instance déployée située dans l'**AWS explorateur** sous le **AWS Lambda**nœud.
**Note**  
Si la fenêtre de votre AWS explorateur n'est pas ouverte, vous pouvez l'ancrer via **Affichage** -> **AWS Explorateur**

1. Notez les options de configuration supplémentaires spécifiques à l'image dans l'onglet **Configuration**. Cet onglet permet de remplacer le `ENTRYPOINT``CMD`, et `WORKDIR` qui peut avoir été spécifié dans le Dockerfile. La **description** est la description que vous avez saisie (le cas échéant) lors du chargement/de la publication.

## Nettoyage
<a name="cleanup-lam"></a>

Si vous ne comptez pas poursuivre le développement avec cet exemple, pensez à supprimer la fonction et l'image ECR déployées afin de ne pas être facturée pour les ressources inutilisées de votre compte. 
+ Les fonctions peuvent être supprimées en cliquant avec le bouton droit sur votre instance déployée située dans l'**AWS explorateur** sous le **AWS Lambda**nœud. 
+ Les référentiels peuvent être supprimés dans l'**AWS explorateur** sous **Amazon Elastic Container Service** -> **Référentiels**.

## Étapes suivantes
<a name="next-steps-lam"></a>

Pour plus d'informations sur la création et le test d'images Lambda, consultez la section [Utilisation d'images de conteneurs avec Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html).

Pour plus d'informations sur le déploiement d'images de conteneurs, les autorisations et le remplacement des paramètres de configuration, consultez la [section Configuration des fonctions](https://docs.aws.amazon.com/lambda/latest/dg/configuration-images.html).

# Tutoriel : Création et test d'une application sans serveur avec AWS Lambda
<a name="lambda-build-test-severless-app"></a>

Vous pouvez créer une application Lambda sans serveur à l'aide AWS Toolkit for Visual Studio d'un modèle. Les modèles de projet Lambda incluent un modèle pour une **application AWS sans serveur**, qui est l' AWS Toolkit for Visual Studio implémentation du [modèle d'application AWS sans serveur](https://github.com/awslabs/serverless-application-model) (SAM).AWS Ce type de projet vous permet de développer un ensemble de AWS Lambda fonctions et de les déployer avec toutes les AWS ressources nécessaires en tant qu'application complète, AWS CloudFormation afin d'orchestrer le déploiement.

Pour les prérequis et les informations relatives à la configuration du AWS Toolkit for Visual Studio, consultez la section [Utilisation des modèles AWS Lambda dans AWS le Toolkit for Visual Studio](lambda-index.md).

**Topics**
+ [Création d'un nouveau projet d'application AWS sans serveur](#create-a-new-aws-serverless-application-project)
+ [Révision des fichiers de l'application sans serveur](#examine-the-files-in-the-serverless-application)
+ [Déploiement de l'application sans serveur](#deploy-the-serverless-application)
+ [Testez l'application sans serveur](#test-the-serverless-application)

## Création d'un nouveau projet d'application AWS sans serveur
<a name="create-a-new-aws-serverless-application-project"></a>

AWS Les projets d'applications sans serveur créent des fonctions Lambda à l'aide d'un CloudFormation modèle sans serveur. CloudFormation les modèles vous permettent de définir des ressources supplémentaires telles que des bases de données, d'ajouter des rôles IAM et de déployer plusieurs fonctions à la fois. Cela diffère des projets AWS Lambda, qui se concentrent sur le développement et le déploiement d'une fonction Lambda unique.

La procédure suivante décrit comment créer un nouveau projet d'application AWS sans serveur.

1. Dans Visual Studio, développez le menu **Fichier**, développez **Nouveau**, puis choisissez **Projet**.

1. Dans la boîte de dialogue **Nouveau projet**, assurez-vous que les **listes déroulantes Langue**, **Plateforme** et **Type de projet** sont définies sur « Tout... » et entrez **aws lambda** dans le champ **Rechercher**.

1. Sélectionnez le modèle **AWS Serverless Application with Tests (.NET Core - C\$1).**
**Note**  
Il est possible que le modèle **AWS Serverless Application with Tests (.NET Core - C\$1)** ne soit pas renseigné en haut des résultats.

1. Cliquez sur **Suivant** pour ouvrir la boîte de dialogue **Configurer votre nouveau projet**.

1. Dans la boîte de dialogue **Configurer votre nouveau projet**, saisissez **ServerlessPowertools** le **nom**, puis complétez les champs restants selon vos préférences. Cliquez sur le bouton **Créer** pour accéder à la boîte de dialogue **Sélectionner le plan**.

1. **Dans la boîte de dialogue Select Blueprint**, choisissez les **Powertools for AWS Lambda** Blueprint, puis cliquez sur **Terminer** pour créer le projet Visual Studio.

## Révision des fichiers de l'application sans serveur
<a name="examine-the-files-in-the-serverless-application"></a>

Les sections suivantes fournissent un aperçu détaillé de trois fichiers d'application sans serveur créés pour votre projet :

1. serverless.template

1. Functions.cs

1. aws-lambda-tools-defaults.json

### 1. serverless.template
<a name="blogcs"></a>

Un `serverless.template` fichier est un AWS CloudFormation modèle pour déclarer vos fonctions Serverless et autres AWS ressources. Le fichier inclus dans ce projet contient une déclaration pour une seule fonction Lambda qui sera exposée via Amazon API Gateway en tant `HTTP *Get*` qu'opération. Vous pouvez modifier ce modèle pour personnaliser la fonction existante ou ajouter d'autres fonctions et autres ressources requises par votre application.

Voici un exemple de fichier `serverless.template` :

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Transform": "AWS::Serverless-2016-10-31",
  "Description": "An AWS Serverless Application.",
  "Resources": {
    "Get": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
         "Architectures": [
            "x86_64"
            ],
         "Handler": "ServerlessPowertools::ServerlessPowertools.Functions::Get",
         "Runtime": "dotnet8",
         "CodeUri": "",
         "MemorySize": 512,
         "Timeout": 30,
         "Role": null,
         "Policies": [
            "AWSLambdaBasicExecutionRole"
            ],
         "Environment": {
            "Variables": {
               "POWERTOOLS_SERVICE_NAME": "ServerlessGreeting",
               "POWERTOOLS_LOG_LEVEL": "Info",
               "POWERTOOLS_LOGGER_CASE": "PascalCase",
               "POWERTOOLS_TRACER_CAPTURE_RESPONSE": true,
               "POWERTOOLS_TRACER_CAPTURE_ERROR": true,
               "POWERTOOLS_METRICS_NAMESPACE": "ServerlessGreeting"
               }
            },
         "Events": {
            "RootGet": {
               "Type": "Api",
               "Properties": {
                  "Path": "/",
                  "Method": "GET"
                  }
               }
            }
         }
      }
   },
  "Outputs": {
    "ApiURL": {
      "Description": "API endpoint URL for Prod environment",
      "Value": {
        "Fn::Sub": "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
      }
    }
  }
}
```

Notez que de nombreux champs de `...AWS:: Serverless::Function...` déclaration sont similaires aux champs d'un déploiement de projet Lambda. La journalisation, les métriques et le suivi de Powertools sont configurés via les variables d'environnement suivantes :
+ POWERTOOLS\$1SERVICE\$1NAME= ServerlessGreeting
+ PowerTools\$1Log\$1Level=Informations
+ POWERTOOLS\$1LOGGER\$1CASE= PascalCase
+ PowerTools\$1Tracer\$1Capture\$1Response=vrai
+ PowerTools\$1Tracer\$1Capture\$1Error=vrai
+ ESPACE DE NOMS POWERTOOLS\$1METRICS\$1= ServerlessGreeting

Pour obtenir des définitions et des informations supplémentaires sur les variables d'environnement, consultez le site Web [Powertools for AWS Lambda references](https://awslabs.github.io/aws-lambda-powertools-dotnet/references/).

### 2. Functions.cs
<a name="functionscs"></a>

`Functions.cs`est un fichier de classe contenant une méthode C\$1 mappée à une seule fonction déclarée dans le fichier modèle. La fonction Lambda répond aux `HTTP Get` méthodes d'API Gateway. Voici un exemple de `Functions.cs` fichier :

```
public class Functions
{
    [Logging(LogEvent = true, CorrelationIdPath = CorrelationIdPaths.ApiGatewayRest)]
    [Metrics(CaptureColdStart = true)]
    [Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)]
    public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context)
    {
        Logger.LogInformation("Get Request");

        var greeting = GetGreeting();

        var response = new APIGatewayProxyResponse
        {
            StatusCode = (int)HttpStatusCode.OK,
            Body = greeting,
            Headers = new Dictionary (string, string) { { "Content-Type", "text/plain" } }
        };

        return response;
    }

    [Tracing(SegmentName = "GetGreeting Method")]
    private static string GetGreeting()
    {
        Metrics.AddMetric("GetGreeting_Invocations", 1, MetricUnit.Count);

        return "Hello Powertools for AWS Lambda (.NET)";
    }
}
```

### 3. aws-lambda-tools-defaults.json
<a name="functionscs"></a>

`aws-lambda-tools-defaults.json`fournit les valeurs par défaut pour l'assistant de AWS déploiement dans Visual Studio et les AWS Lambda commandes ajoutées à la CLI .NET Core. Voici un exemple du `aws-lambda-tools-defaults.json` fichier inclus dans ce projet :

```
{
  "profile": "Default",
  "region": "us-east-1",
  "configuration": "Release",
  "s3-prefix": "ServerlessPowertools/",
  "template": "serverless.template",
  "template-parameters": ""
}
```

## Déploiement de l'application sans serveur
<a name="deploy-the-serverless-application"></a>

Pour déployer votre application sans serveur, procédez comme suit :

1. Dans l'**explorateur de solutions**, ouvrez le menu contextuel de votre projet (cliquez avec le bouton droit de la souris) et choisissez **Publier sur AWS Lambda pour** ouvrir la boîte de dialogue **Publier une application AWS sans serveur**.

1. Dans la boîte de dialogue **Publier une application AWS sans serveur**, entrez le nom du conteneur de CloudFormation pile dans le champ **Stack Name**.

1. Dans le champ **Compartiment S3**, choisissez un compartiment Amazon S3 vers lequel votre bundle d'applications sera chargé ou choisissez le **Nouveau...** bouton et entrez le nom d'un nouveau compartiment Amazon S3. Choisissez ensuite **Publier** pour publier afin de déployer votre application.
**Note**  
Votre CloudFormation stack et votre compartiment Amazon S3 doivent se trouver dans la même AWS région. Les autres paramètres de votre projet sont définis dans le `serverless.template` fichier.  
![\[Image de la boîte de dialogue Publier une application AWS sans serveur.\]](http://docs.aws.amazon.com/fr_fr/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-serverless-03192024.png)

1. La fenêtre **Stack** View s'ouvre pendant le processus de publication. Lorsque le déploiement est terminé, le champ **État** affiche :`CREATE_COMPLETE`.  
![\[Image de la fenêtre d'affichage de la pile de déploiement dans Visual Studio.\]](http://docs.aws.amazon.com/fr_fr/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-stackview-03192024.png)

## Testez l'application sans serveur
<a name="test-the-serverless-application"></a>

Lorsque la création de la pile est terminée, vous pouvez consulter votre application à l'aide de l'**URL AWS sans serveur**. Si vous avez terminé ce didacticiel sans ajouter de fonctions ou de paramètres supplémentaires, l'accès à votre URL AWS sans serveur affiche la phrase suivante dans votre navigateur Web :`Hello Powertools for AWS Lambda (.NET)`.

# Didacticiel : Création d'une application Lambda Amazon Rekognition
<a name="lambda-rekognition-example"></a>

Ce didacticiel explique comment créer une application Lambda qui utilise Amazon Rekognition pour étiqueter des objets Amazon S3 avec des étiquettes détectées.

Pour les prérequis et les informations relatives à la configuration du AWS Toolkit for Visual Studio, consultez la section [Utilisation des modèles AWS Lambda dans AWS le Toolkit for Visual Studio](lambda-index.md).

## Création d'un projet de rekognition d'images Lambda Visual Studio .NET Core
<a name="create-a-visual-studio-net-core-lam-image-rekognition-project"></a>

La procédure suivante explique comment créer une application Amazon Rekognition Lambda à partir du. AWS Toolkit for Visual Studio

**Note**  
Lors de sa création, votre application dispose d'une solution composée de deux projets : le projet source qui contient le code de votre fonction Lambda à déployer sur Lambda, et un projet de test utilisant xUnit pour tester votre fonction localement.  
Il arrive que Visual Studio ne trouve pas toutes les NuGet références de vos projets. Cela est dû au fait que les plans nécessitent des dépendances qui doivent être NuGet extraites. Lorsque de nouveaux projets sont créés, Visual Studio extrait uniquement des références locales et non des références distantes NuGet. Pour corriger les NuGet erreurs : cliquez avec le bouton droit sur vos références et choisissez **Restaurer les packages**.

1. Dans Visual Studio, développez le menu **Fichier**, développez **Nouveau**, puis choisissez **Projet**.

1. Dans la boîte de dialogue **Nouveau projet**, assurez-vous que les **listes déroulantes Langue**, **Plateforme** et **Type de projet** sont définies sur « Tout... » et entrez **aws lambda** dans le champ **Rechercher**.

1. Sélectionnez le modèle **AWS Lambda with Tests (.NET Core - C\$1).**

1. Cliquez sur **Suivant** pour ouvrir la boîte de dialogue **Configurer votre nouveau projet**.

1. Dans la boîte de dialogue **Configurer votre nouveau projet**, saisissez ImageRekognition « » pour le **nom**, puis complétez les champs restants selon vos préférences. Cliquez sur le bouton **Créer** pour accéder à la boîte de dialogue **Sélectionner le plan**.

1. **Dans la boîte de dialogue Sélectionner un plan**, choisissez le plan **Detect Image Labels**, puis choisissez **Terminer** pour créer le projet Visual Studio.
**Note**  
Ce plan fournit du code pour écouter les événements Amazon S3 et utilise Amazon Rekognition pour détecter les étiquettes et les ajouter à l'objet S3 sous forme de balises.

## Révision des fichiers de projet
<a name="examine-the-files"></a>

Les sections suivantes examinent ces fichiers de projet :

1. `Function.cs`

1. `aws-lambda-tools-defaults.json`

### 1. Function.cs
<a name="functioncs"></a>

À l'intérieur du `Function.cs` fichier, le premier segment de code est l'attribut d'assemblage, situé en haut du fichier. Par défaut, Lambda accepte uniquement les paramètres d'entrée et les types de retour. `System.IO.Stream` Vous devez enregistrer un sérialiseur pour utiliser des classes typées pour les paramètres d'entrée et les types de retour. L'attribut assembly enregistre le sérialiseur Lambda JSON, qui permet de `Newtonsoft.Json` convertir les flux en classes typées. Vous pouvez définir le sérialiseur au niveau de l'assemblage ou de la méthode.

Voici un exemple de l'attribut assembly :

```
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
```

La classe possède deux constructeurs. Le premier est un constructeur par défaut qui est utilisé lorsque Lambda appelle votre fonction. Ce constructeur crée les clients des services Amazon S3 et Amazon Rekognition. Le constructeur extrait également les AWS informations d'identification de ces clients à partir du rôle IAM que vous attribuez à la fonction lorsque vous la déployez. La AWS région pour les clients est définie sur la région dans laquelle votre fonction Lambda s'exécute. Dans ce plan, vous ne souhaitez ajouter des balises à l'objet Amazon S3 que si le service Amazon Rekognition possède un niveau de confiance minimal quant à l'étiquette. Ce constructeur vérifie la variable d'environnement `MinConfidence` pour déterminer le niveau de confiance acceptable. Vous pouvez définir cette variable d'environnement lorsque vous déployez la fonction Lambda.

Voici un exemple du premier constructeur de classe dans `Function.cs` :

```
public Function()
{
    this.S3Client = new AmazonS3Client();
    this.RekognitionClient = new AmazonRekognitionClient();

    var environmentMinConfidence = System.Environment.GetEnvironmentVariable(MIN_CONFIDENCE_ENVIRONMENT_VARIABLE_NAME);
    if(!string.IsNullOrWhiteSpace(environmentMinConfidence))
    {
        float value;
        if(float.TryParse(environmentMinConfidence, out value))
        {
            this.MinConfidence = value;
            Console.WriteLine($"Setting minimum confidence to {this.MinConfidence}");
        }
        else
        {
            Console.WriteLine($"Failed to parse value {environmentMinConfidence} for minimum confidence. Reverting back to default of {this.MinConfidence}");
        }
    }
    else
    {
        Console.WriteLine($"Using default minimum confidence of {this.MinConfidence}");
    }
}
```

L'exemple suivant montre comment le second constructeur peut être utilisé pour les tests. Le projet de test configure ses propres clients S3 et Rekognition et les transmet :

```
public Function(IAmazonS3 s3Client, IAmazonRekognition rekognitionClient, float minConfidence)
{
    this.S3Client = s3Client;
    this.RekognitionClient = rekognitionClient;
    this.MinConfidence = minConfidence;
}
```

Voici un exemple de la `FunctionHandler` méthode contenue dans le `Function.cs` fichier.

```
public async Task FunctionHandler(S3Event input, ILambdaContext context)
{
    foreach(var record in input.Records)
    {
        if(!SupportedImageTypes.Contains(Path.GetExtension(record.S3.Object.Key)))
        {
            Console.WriteLine($"Object {record.S3.Bucket.Name}:{record.S3.Object.Key} is not a supported image type");
            continue;
        }

        Console.WriteLine($"Looking for labels in image {record.S3.Bucket.Name}:{record.S3.Object.Key}");
        var detectResponses = await this.RekognitionClient.DetectLabelsAsync(new DetectLabelsRequest
        {
            MinConfidence = MinConfidence,
            Image = new Image
            {
                S3Object = new Amazon.Rekognition.Model.S3Object
                {
                    Bucket = record.S3.Bucket.Name,
                    Name = record.S3.Object.Key
                }
            }
        });

        var tags = new List();
        foreach(var label in detectResponses.Labels)
        {
            if(tags.Count < 10)
            {
                Console.WriteLine($"\tFound Label {label.Name} with confidence {label.Confidence}");
                tags.Add(new Tag { Key = label.Name, Value = label.Confidence.ToString() });
            }
            else
            {
                Console.WriteLine($"\tSkipped label {label.Name} with confidence {label.Confidence} because maximum number of tags reached");
            }
        }

        await this.S3Client.PutObjectTaggingAsync(new PutObjectTaggingRequest
        {
            BucketName = record.S3.Bucket.Name,
            Key = record.S3.Object.Key,
            Tagging = new Tagging
            {
                TagSet = tags
            }
        });
    }
    return;
}
```

 `FunctionHandler` est la méthode que lambda appelle après avoir construit l'instance. Notez que le paramètre d'entrée est de type `S3Event` et pas un `Stream`. Vous pouvez effectuer cette action grâce au sérialiseur JSON Lambda enregistré. `S3Event`Il contient toutes les informations relatives à l'événement déclenché dans Amazon S3. La fonction parcourt tous les objets S3 qui faisaient partie de l'événement et indique à Rekognition de détecter les étiquettes. Lorsque les étiquettes ont été détectées, elles sont ajoutées sous forme d'étiquettes à l'objet S3.

**Note**  
Le code contient des appels à`Console.WriteLine()`. Lorsque la fonction est exécutée dans Lambda, tous les appels sont redirigés `Console.WriteLine()` vers Amazon CloudWatch Logs.

### 2. aws-lambda-tools-defaults.json
<a name="toolsdefaults"></a>

Le `aws-lambda-tools-defaults.json` fichier contient les valeurs par défaut définies par le plan pour préremplir certains champs de l'assistant de déploiement. Il est également utile pour définir les options de ligne de commande pour l'intégration à la CLI .NET Core.

Pour accéder à l'intégration de la CLI .NET Core, accédez au répertoire de projet de la fonction et tapez**dotnet lambda help**.

**Note**  
Le gestionnaire de fonctions indique la méthode que Lambda doit appeler en réponse à la fonction invoquée. Le format de ce champ est le suivant :`<assembly-name>::<full-type-name>::<method-name>`. L'espace de noms doit être inclus dans le nom du type.

## Déploiement de la fonction
<a name="deploy-the-function"></a>

La procédure suivante décrit comment déployer votre fonction Lambda.

1. **Dans l'**explorateur de solutions**, cliquez avec le bouton droit sur le projet Lambda et choisissez **Publier sur AWS Lambda** pour ouvrir la fenêtre Upload to. AWS Lambda**
**Note**  
Les valeurs prédéfinies sont extraites du `aws-lambda-tools-defaults.json` fichier.

1. Dans la AWS Lambda fenêtre **Télécharger vers**, entrez un nom dans le champ **Nom de la fonction**, puis cliquez sur le bouton **Suivant** pour accéder à la fenêtre **Détails des fonctions avancées**.
**Note**  
Cet exemple utilise le **nom de la fonction****ImageRekognition**.  
![\[AWS Lambda function upload interface with package type, runtime, and configuration options.\]](http://docs.aws.amazon.com/fr_fr/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-03192024.png)

1. Dans la fenêtre **Détails des fonctions avancées**, sélectionnez un rôle IAM qui autorise votre code à accéder à vos ressources Amazon S3 et Amazon Rekognition.
**Note**  
Si vous suivez cet exemple, sélectionnez le `AWSLambda_FullAccess` rôle.

1. Définissez la variable `MinConfidence` d'environnement sur 60, puis choisissez **Upload** pour lancer le processus de déploiement. Le processus de publication est terminé lorsque la vue **Fonction** s'affiche dans l'**AWS explorateur**.  
![\[AWS Lambda function configuration interface showing permissions, execution, and environment settings.\]](http://docs.aws.amazon.com/fr_fr/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-advanced-03192024.png)

1. Après un déploiement réussi, configurez Amazon S3 pour qu'il envoie ses événements à votre nouvelle fonction en accédant à l'onglet **Sources d'événements**.

1. Dans l'onglet **Sources d'événements**, cliquez sur le bouton **Ajouter**, puis sélectionnez le compartiment Amazon S3 pour vous connecter à votre fonction Lambda.
**Note**  
Le bucket doit se trouver dans la même AWS région que votre fonction Lambda.

## Test de la fonction
<a name="test-the-function"></a>

Maintenant que la fonction est déployée et qu'un compartiment S3 est configuré comme source d'événements pour celle-ci, ouvrez le navigateur de compartiments S3 depuis l'**AWS explorateur** pour le compartiment que vous avez sélectionné. Chargez ensuite des images.

Lorsque le chargement est terminé, vous pouvez vérifier que votre fonction s'est exécutée en consultant les journaux dans la vue de la fonction. Vous pouvez également cliquer avec le bouton droit de la souris sur les images dans le navigateur de compartiment et choisir **Propriétés**. Dans l'onglet **Balises**, vous pouvez afficher les étiquettes qui ont été appliquées à votre objet.

![\[Properties window showing metadata tags for an image file in a cloud storage bucket.\]](http://docs.aws.amazon.com/fr_fr/toolkit-for-visual-studio/latest/user-guide/images/lambda-object-properties.png)


# Tutoriel : Utilisation d'Amazon Logging Frameworks AWS Lambda pour créer des journaux d'applications
<a name="cw-log-frameworks"></a>

Vous pouvez utiliser Amazon CloudWatch Logs pour surveiller, stocker et accéder aux journaux de votre application. Pour transférer les données des CloudWatch journaux dans Logs, utilisez un AWS SDK ou installez l'agent CloudWatch Logs pour surveiller certains dossiers de journaux. CloudWatch Logs est intégré à plusieurs frameworks de journalisation .NET populaires, ce qui simplifie les flux de travail.

Pour commencer à travailler avec CloudWatch Logs et les frameworks de journalisation .NET, ajoutez le NuGet package et la source de sortie CloudWatch Logs appropriés à votre application, puis utilisez votre bibliothèque de journalisation comme vous le feriez normalement. Cela permet à votre application de consigner les messages avec votre framework .NET, de les envoyer à CloudWatch Logs, d'afficher les messages de journal de votre application dans la console CloudWatch Logs. Vous pouvez également configurer des métriques et des alarmes à partir de la console CloudWatch Logs, en fonction des messages de journal de votre application.

Les frameworks de journalisation .NET pris en charge incluent :
+ **NLog**: Pour le voir, consultez le package [nuget.org NLog ](https://www.nuget.org/packages/AWS.Logger.NLog).
+ **Log4net** : Pour le voir, consultez le package Log4net [nuget.org](https://www.nuget.org/packages/AWS.Logger.NLog).
+ **Framework de journalisation ASP.NET Core** : pour le voir, consultez le package [nuget.org ASP.NET Core](https://www.nuget.org/packages/AWS.Logger.AspNetCore/) logging Framework.

Voici un exemple de `NLog.config` fichier qui active à la fois les CloudWatch journaux et la console comme sortie pour les messages de journal en y ajoutant le `AWS.Logger.NLog` NuGet package et la AWS cible`NLog.config`.

```
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      throwExceptions="true">
  <targets>
    <target name="aws" type="AWSTarget" logGroup="NLog.ConfigExample" region="us-east-1"/>
    <target name="logfile" xsi:type="Console" layout="${callsite} ${message}" />
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="logfile,aws" />
  </rules>
</nlog>
```



Les plugins de journalisation sont tous basés sur AWS SDK pour .NET et authentifient vos AWS informations d'identification selon un processus similaire au SDK. L'exemple suivant détaille les autorisations requises par les informations d'identification du plugin de journalisation pour accéder aux CloudWatch journaux :

**Note**  
Les plugins de journalisation AWS .NET sont un projet open source. Pour obtenir des informations, des exemples et des instructions supplémentaires, consultez les rubriques [relatives aux [exemples](https://github.com/aws/aws-logging-dotnet/tree/master/samples) et aux instructions](https://github.com/aws/aws-logging-dotnet/blob/master/README.md) du GitHub référentiel [AWS Logging .NET](https://github.com/aws/aws-logging-dotnet).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ]
    }
  ]
}
```

------