

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

Sviluppa e distribuisci le tue funzioni Lambda in C\$1 basate su .NET Core con. AWS Toolkit for Visual Studio AWS Lambda è un servizio di elaborazione che consente di eseguire codice senza eseguire il provisioning o la gestione di server. Il Toolkit for Visual Studio AWS Lambda include modelli di progetto.NET Core per Visual Studio. 

Per ulteriori informazioni AWS Lambda, consulta la [AWS Lambda Developer Guide](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html).

Per ulteriori informazioni su.NET Core, vedere la guida di [Microsoft.NET Core](https://docs.microsoft.com/en-us/dotnet/articles/core/). Per i prerequisiti.NET Core e le istruzioni di installazione per le piattaforme Windows, macOS e Linux, [consulta Download di.NET](https://www.microsoft.com/net/download/core) Core.

Negli argomenti seguenti viene descritto come AWS Lambda utilizzare il Toolkit for Visual Studio.

**Topics**
+ [AWS Lambda Progetto base](lambda-creating-project-in-visual-studio.md)
+ [AWS Lambda Progetto di base per la creazione di un'immagine Docker](lambda-creating-project-docker-image.md)
+ [Tutorial: crea e testa un'applicazione serverless con AWS Lambda](lambda-build-test-severless-app.md)
+ [Tutorial: creazione di un'applicazione Amazon Rekognition Lambda](lambda-rekognition-example.md)
+ [Tutorial: Utilizzo di Amazon Logging Frameworks AWS Lambda per creare log di applicazioni](cw-log-frameworks.md)

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

È possibile creare una funzione Lambda utilizzando i modelli di progetto Microsoft.NET Core, in. AWS Toolkit for Visual Studio

## Creare un progetto Lambda di Visual Studio .NET Core
<a name="create-a-visual-studio-net-core-lam-project"></a>

Puoi usare modelli e blueprint Lambda-Visual Studio per velocizzare l'inizializzazione del progetto. I blueprint Lambda contengono funzioni predefinite che semplificano la creazione di una base di progetto flessibile.

**Nota**  
Il servizio Lambda ha limiti di dati su diversi tipi di pacchetti. *Per informazioni dettagliate sui limiti dei dati, consulta l'argomento sulle [quote Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) nella Lambda User AWS Guide.*

**Per creare un progetto Lambda in Visual Studio**

1. Da Visual Studio espandi il menu **File**, espandi **Nuovo**, quindi scegli **Progetto**.

1. Dalla finestra di dialogo **Nuovo progetto**, imposta le caselle a discesa **Lingua**, **Piattaforma** e **Tipo di progetto** su «Tutto», quindi digita **aws lambda** nel campo **Cerca**. Scegli il modello **AWS Lambda Project (.NET Core - C\$1**).

1. Nel campo **Nome**, inserisci**AWSLambdaSample**, specifica la **posizione** del file desiderata, quindi scegli **Crea** per procedere.

1. Dalla pagina **Seleziona Blueprint, seleziona il blueprint** **Empty Function**, quindi scegli **Finish** per creare il progetto Visual Studio.

## Esamina i file di progetto
<a name="review-the-project-files"></a>

Ci sono due file di progetto da esaminare: `aws-lambda-tools-defaults.json` e`Function.cs`.

L'esempio seguente mostra il `aws-lambda-tools-defaults.json` file, che viene creato automaticamente come parte del progetto. È possibile impostare le opzioni di compilazione utilizzando i campi di questo file. 

**Nota**  
 I modelli di progetto in Visual Studio contengono molti campi diversi, prendi nota di quanto segue:  
**function-handler**: specifica il metodo che viene eseguito quando viene eseguita la funzione Lambda
Se si specifica un valore nel campo **function-handler**, tale valore viene precompilato nella procedura guidata di pubblicazione.
Se rinominate la funzione, la classe o l'assieme, dovete aggiornare anche il campo corrispondente nel file. `aws-lambda-tools-defaults.json`

```
{
  "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"
}
```

Esamina il `Function.cs` file. `Function.cs`definisce le funzioni c\$1 da esporre come funzioni Lambda. Questa `FunctionHandler` è la funzionalità Lambda che viene eseguita quando viene eseguita la funzione Lambda. In questo progetto, è definita una funzione:`FunctionHandler`, che richiama `ToUpper()` il testo di input. 

Il tuo progetto è ora pronto per la pubblicazione su Lambda.

## Pubblicazione su Lambda
<a name="publish-to-lam"></a>

La procedura e l'immagine seguenti mostrano come caricare la funzione su Lambda utilizzando il. AWS Toolkit for Visual Studio

![\[Richiamo della pagina della funzione di test\]](http://docs.aws.amazon.com/it_it/toolkit-for-visual-studio/latest/user-guide/images/uploadnet8.png)


**Pubblicazione della funzione su Lambda**

1. Passa a AWS Explorer espandendo **View** e scegliendo **AWS Explorer**.

1. In **Solution Explorer**, apri il menu contestuale per (fai clic con il pulsante destro del mouse) per il progetto che desideri pubblicare, quindi scegli **Pubblica su AWS Lambda** per aprire la finestra Carica funzione **Lambda**.

1. Dalla finestra **Upload Lambda Function**, completa i seguenti campi:

   1. **Tipo di pacchetto**: a scelta**Zip**. Un file ZIP verrà creato come risultato del processo di compilazione e verrà caricato su Lambda. In alternativa, puoi scegliere **Package Type****Image**. **Il [tutorial: Basic Lambda Project Creating Docker Image](lambda-creating-project-docker-image.md) descrive come pubblicare usando Package Type.** **Image**

   1. **Lambda Runtime**: scegli Lambda Runtime dal menu a discesa.

   1. **Architettura**: seleziona il radiale per la tua architettura preferita.

   1. **Nome funzione**: seleziona il radiale per **Crea nuova funzione**, quindi inserisci un nome visualizzato per l'istanza Lambda. A questo nome fanno riferimento sia l' AWS Explorer che i display. Console di gestione AWS 

   1. **Gestore**: utilizzare questo campo per specificare un gestore di funzioni. Ad esempio: **AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler**.

   1. *(Facoltativo)* **Descrizione**: inserisci il testo descrittivo da visualizzare con l'istanza, dall'interno di. Console di gestione AWS

   1. **Configurazione**: scegli la configurazione preferita dal menu a discesa.

   1. **Framework**: scegli il tuo framework preferito dal menu a discesa.

   1. **Salva impostazioni**: seleziona questa casella per salvare le impostazioni correnti `aws-lambda-tools-defaults.json` come predefinite per le distribuzioni future.

   1. Scegliete **Avanti** per passare alla finestra Dettagli **avanzati delle funzioni.**

1. Nella finestra **Dettagli delle funzioni avanzate**, completare i seguenti campi:

   1. **Nome del ruolo**: scegli un ruolo associato al tuo account. Il ruolo fornisce credenziali temporanee per tutte le chiamate di AWS servizio effettuate dal codice della funzione. Se non disponi di un ruolo, scorri fino a individuare **Nuovo ruolo basato su AWS Managed Policy** nel selettore a discesa, quindi scegli. **AWSLambdaBasicExecutionRole** Questo ruolo ha autorizzazioni di accesso minime. 
**Nota**  
Il tuo account deve disporre dell'autorizzazione per eseguire l' ListPolicies azione IAM, altrimenti l'elenco dei **nomi dei ruoli** sarà vuoto e non potrai continuare.

   1. *(Facoltativo)* Se la funzione Lambda accede alle risorse su un Amazon VPC, seleziona le sottoreti e i gruppi di sicurezza.

   1. *(Facoltativo)* Imposta tutte le variabili di ambiente necessarie alla funzione Lambda. Le chiavi vengono crittografate automaticamente dalla chiave di servizio predefinita, che è gratuita. In alternativa, puoi specificare una AWS KMS chiave, per la quale è previsto un costo. [KMS](https://aws.amazon.com/kms/) è un servizio gestito che puoi utilizzare per creare e controllare le chiavi di crittografia utilizzate per crittografare i dati. Se hai una AWS KMS chiave, puoi selezionarla dall'elenco.

1. Scegli **Carica** per aprire la finestra della **funzione di caricamento** e iniziare il processo di caricamento.
**Nota**  
La pagina **Funzione di caricamento** viene visualizzata durante il caricamento della funzione su. AWS Per mantenere aperta la procedura guidata dopo il caricamento in modo da poter visualizzare il rapporto, deseleziona **Chiudi automaticamente la procedura guidata in caso di completamento con successo** nella parte inferiore del modulo prima del completamento del caricamento.   
Dopo il caricamento della funzione, la funzione Lambda è attiva. La pagina **Funzione:** visualizza si apre e mostra la configurazione della nuova funzione Lambda.

1. Dalla scheda **Funzione di test**, inserisci `hello lambda!` il campo di immissione del testo, quindi scegli **Invoke per richiamare** manualmente la funzione Lambda. Il testo viene visualizzato nella scheda **Risposta, convertito in lettere maiuscole**. 
**Nota**  
**Puoi riaprire la **Funzione:** visualizza in qualsiasi momento facendo doppio clic sull'istanza distribuita situata nell'Explorer sotto il AWS nodo. **AWS Lambda****  
![\[Richiamo della pagina della funzione di test\]](http://docs.aws.amazon.com/it_it/toolkit-for-visual-studio/latest/user-guide/images/invokeBasic.PNG)

1. *(Facoltativo)* Per confermare di aver pubblicato correttamente la funzione Lambda, accedi a Console di gestione AWS e scegli Lambda. La console mostra tutte le funzioni Lambda pubblicate, inclusa quella appena creata.

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

Se non intendi continuare a sviluppare utilizzando questo esempio, elimina la funzione che hai implementato in modo da non farti addebitare le risorse non utilizzate nel tuo account.

**Nota**  
Lambda monitora automaticamente le funzioni Lambda per te, riportando i parametri tramite Amazon. CloudWatch Per monitorare e risolvere i problemi della tua funzione, consulta l' CloudWatchargomento [Troubleshooting and Monitoring AWS Lambda Functions with Amazon](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html) nella Developer Guide. AWS Lambda 

**Per eliminare la tua funzione**

1. Dall'**AWS Explorer** espandi il **AWS Lambda**nodo.

1. Fai clic con il pulsante destro del mouse sull'istanza distribuita, quindi scegli **Elimina**.

# AWS Lambda Progetto di base per la creazione di un'immagine Docker
<a name="lambda-creating-project-docker-image"></a>

Puoi usare Toolkit for Visual Studio per distribuire la AWS Lambda tua funzione come immagine Docker. Usando Docker, hai un maggiore controllo sul tuo runtime. Ad esempio, puoi scegliere runtime personalizzati come .NET 8.0. L'immagine Docker viene distribuita allo stesso modo di qualsiasi altra immagine del contenitore. Questo tutorial imita da vicino [Tutorial: Basic Lambda](lambda-creating-project-in-visual-studio.md) Project, con due differenze:
+ Un Dockerfile è incluso nel progetto.
+ Viene scelta una configurazione di pubblicazione alternativa.

*Per informazioni sulle immagini dei container Lambda, consulta [Lambda Deployment Packages](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) nella Developer Guide.AWS Lambda *

Per ulteriori informazioni sull'utilizzo di Lambda AWS Toolkit for Visual Studio, consulta la sezione [Utilizzo dei AWS Lambda modelli nell' AWS Toolkit for Visual Studio](lambda-index.md)argomento di questa Guida per l'utente.

## Creare un progetto Lambda di Visual Studio .NET Core
<a name="create-a-visual-studio-net-core-lam-project"></a>

Puoi utilizzare modelli e blueprint di Lambda Visual Studio per velocizzare l'inizializzazione del progetto. I blueprint Lambda contengono funzioni predefinite che semplificano la creazione di una base di progetto flessibile.

**Per creare un progetto Lambda di Visual Studio .NET Core**

1. Da Visual Studio espandi il menu **File**, espandi **Nuovo**, quindi scegli **Progetto**.

1. Dalla finestra di dialogo **Nuovo progetto**, imposta le caselle a discesa **Lingua**, **Piattaforma** e **Tipo di progetto** su «Tutto», quindi digita **aws lambda** nel campo **Cerca**. Scegli il modello **AWS Lambda Project (.NET Core - C\$1**).

1. **Nel campo **Nome progetto**, inserisci**AWSLambdaDocker**, specifica la **posizione** del file, quindi scegli Crea.**

1. Nella pagina **Seleziona Blueprint, scegli il blueprint** **.NET 8 (Container Image)**, quindi scegli **Fine** per creare il progetto Visual Studio. Ora puoi rivedere la struttura e il codice del progetto.

## Revisione dei file di progetto
<a name="review-the-project-files"></a>

Le seguenti sezioni esaminano i tre file di progetto creati dal blueprint **.NET 8 (Container Image)**:

1. `Dockerfile`

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

1. `Function.cs`

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

A `Dockerfile` esegue tre azioni principali:
+ `FROM`: stabilisce l'immagine di base da utilizzare per questa immagine. Questa immagine di base fornisce .NET Runtime, Lambda runtime e uno script di shell che fornisce un punto di ingresso per il processo Lambda .NET.
+ `WORKDIR`: stabilisce la directory di lavoro interna dell'immagine come. `/var/task`
+ `COPY`: Copierà i file generati dal processo di compilazione dalla loro posizione locale nella directory di lavoro dell'immagine.

Di seguito sono riportate `Dockerfile` le azioni opzionali che è possibile specificare:
+ `ENTRYPOINT`: L'immagine di base include già un`ENTRYPOINT`, che è il processo di avvio eseguito all'avvio dell'immagine. Se desideri specificare il tuo, stai sovrascrivendo quel punto di ingresso di base.
+ `CMD`: Indica AWS quale codice personalizzato si desidera eseguire. Si aspetta un nome completo per il metodo personalizzato. Questa riga deve essere inclusa direttamente nel Dockerfile o può essere specificata durante il processo di pubblicazione. 

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

Di seguito è riportato un esempio di Dockerfile creato dal blueprint .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>

Il `aws-lambda-tools-defaults.json` file viene utilizzato per specificare i valori predefiniti per la procedura guidata di distribuzione di Toolkit for Visual Studio e.NET Core CLI. L'elenco seguente descrive i campi che è possibile impostare nel file. `aws-lambda-tools-defaults.json`
+ `profile`: imposta il tuo AWS profilo.
+ `region`: imposta la AWS regione in cui sono archiviate le risorse.
+ `configuration`: imposta la configurazione utilizzata per pubblicare la funzione.
+ `package-type`: imposta il tipo di pacchetto di distribuzione su un'immagine del contenitore o su un archivio di file.zip.
+ `function-memory-size`: imposta l'allocazione della memoria per la funzione in MB.
+ `function-timeout`: Il timeout è la quantità massima di tempo in secondi che una funzione Lambda può essere eseguita. Puoi regolarlo con incrementi di 1 secondo fino a un valore massimo di 15 minuti.
+ `docker-host-build-output-dir`: imposta la directory di output del processo di compilazione correlata alle istruzioni contenute in. `Dockerfile`
+ `image-command`: è un nome completo per il tuo metodo, il codice che vuoi che venga eseguita dalla funzione Lambda. La sintassi è:. `{Assembly}::{Namespace}.{ClassName}::{MethodName}` Per ulteriori informazioni, consulta [Handler signatures](https://docs.aws.amazon.com/lambda/latest/dg/csharp-handler.html#csharp-handler-signatures). L'impostazione `image-command` qui precompila questo valore nella procedura guidata di pubblicazione di Visual Studio in un secondo momento. 

Di seguito è riportato un esempio di un aws-lambda-tools-defaults file .json creato dal blueprint .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>

Il `Function.cs` file definisce le funzioni c\$1 da esporre come funzioni Lambda. `FunctionHandler`È la funzionalità Lambda che viene eseguita quando viene eseguita la funzione Lambda. In questo progetto, `FunctionHandler` richiama `ToUpper()` il testo di input. 

## Pubblica su Lambda
<a name="publish-to-lam"></a>

Le immagini Docker generate dal processo di compilazione vengono caricate su Amazon Elastic Container Registry (Amazon ECR). Amazon ECR è un registro di container Docker completamente gestito che utilizzi per archiviare, gestire e distribuire immagini di container Docker. Amazon ECR ospita l'immagine, a cui Lambda fa quindi riferimento per fornire la funzionalità Lambda programmata quando viene richiamata. 

**Per pubblicare la tua funzione su Lambda**

1. Da **Solution Explorer**, apri il menu contestuale (fai clic con il pulsante destro del mouse) per il progetto, quindi scegli **Pubblica per AWS Lambda** aprire la finestra **Upload Lambda Function**.

1. Dalla pagina **Upload Lambda Function**, procedi come segue:  
![\[Schermata di caricamento per la pubblicazione della funzione Lambda basata su immagini su AWS\]](http://docs.aws.amazon.com/it_it/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-docker-03192024.png)

   1.  Per **Tipo di pacchetto**, **Image** è stato selezionato automaticamente come **tipo di pacchetto** perché la procedura guidata di pubblicazione ha rilevato un elemento `Dockerfile` all'interno del progetto. 

   1. Per **Function Name**, inserisci un nome visualizzato per l'istanza Lambda. Questo nome è il nome di riferimento visualizzato sia in AWS Explorer in Visual Studio che in. Console di gestione AWS

   1.  Per **Descrizione**, inserisci il testo da visualizzare con l'istanza in Console di gestione AWS.

   1. Per **Image Command**, inserisci un percorso completo del metodo che desideri venga eseguita dalla funzione Lambda: **AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler** 
**Nota**  
Qualsiasi nome di metodo inserito qui sovrascriverà qualsiasi istruzione CMD all'interno del Dockerfile. **L'immissione di Image Command** è facoltativa solo SE `CMD` si `Dockerfile` include un'istruzione su come avviare la funzione Lambda.

   1. Per **Image Repo**, inserisci il nome di un Amazon Elastic Container Registry nuovo o esistente. L'immagine Docker creata dal processo di compilazione viene caricata in questo registro. La definizione Lambda che viene pubblicata farà riferimento all'immagine Amazon ECR.

   1.  Per **Image Tag**, inserisci un tag Docker da associare all'immagine nel repository. 

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Dettagli delle funzioni avanzate**, in **Nome ruolo** scegli un ruolo associato al tuo account. Il ruolo viene utilizzato per fornire credenziali temporanee per tutte le chiamate Amazon Web Services effettuate dal codice nella funzione. Se non disponi di un ruolo, scegli **Nuovo ruolo basato su AWS Managed Policy** e poi scegli **AWSLambdaBasicExecutionRole**. 
**Nota**  
Il tuo account deve disporre dell'autorizzazione per eseguire l' ListPolicies azione IAM, altrimenti l'elenco dei **nomi dei ruoli** sarà vuoto.

1. Scegli **Carica** per avviare i processi di caricamento e pubblicazione.
**Nota**  
La pagina **Funzione di caricamento** viene visualizzata durante il caricamento della funzione. Il processo di pubblicazione crea quindi l'immagine in base ai parametri di configurazione, crea il repository Amazon ECR se necessario, carica l'immagine nel repository e crea la Lambda che fa riferimento a quel repository con quell'immagine.   
Dopo il caricamento della funzione, si apre la pagina **Funzione** che mostra la configurazione della nuova funzione Lambda. 

1. **Per richiamare manualmente la funzione Lambda, nella scheda Funzione di **test, `hello image based lambda` inserisci il** campo di immissione a testo libero della richiesta e quindi scegli Invoke.** **Il testo, convertito in lettere maiuscole, verrà visualizzato in Response.**   
![\[La scheda Test Function della pagina di visualizzazione delle funzioni pubblicata contiene un pulsante per richiamare manualmente il metodo Lambda.\]](http://docs.aws.amazon.com/it_it/toolkit-for-visual-studio/latest/user-guide/images/lambda-invoke-docker-03192024.png)

1. Per visualizzare il repository, in **AWS Explorer**, in **Amazon Elastic Container Service**, scegli **Repositories**.

   **Puoi riaprire la **funzione:** visualizzala in qualsiasi momento facendo doppio clic sull'istanza distribuita situata nell'Explorer sotto il AWS nodo. **AWS Lambda****
**Nota**  
****Se la finestra di AWS Explorer non è aperta, puoi agganciarla tramite Visualizza -> Explorer AWS ****

1. Nota le opzioni di configurazione aggiuntive specifiche dell'immagine nella scheda **Configurazione**. Questa scheda fornisce un modo per sovrascrivere il `ENTRYPOINT``CMD`, e `WORKDIR` che potrebbe essere stato specificato all'interno del Dockerfile. **Descrizione** è la descrizione che hai inserito (se presente) durante il caricamento/pubblicazione.

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

Se non hai intenzione di continuare a sviluppare con questo esempio, ricordati di eliminare la funzione e l'immagine ECR che sono state implementate in modo da non farti addebitare le risorse non utilizzate nel tuo account. 
+ **Le funzioni possono essere eliminate facendo clic con il pulsante destro del mouse sull'istanza distribuita situata in Explorer sotto il nodo.AWS **AWS Lambda**** 
+ I repository possono essere eliminati in **AWS Explorer** in **Amazon Elastic Container Service** -> **Repositories**.

## Fasi successive
<a name="next-steps-lam"></a>

Per informazioni sulla creazione e il test di immagini Lambda, consulta [Using Container Images with Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html).

[Per informazioni sulla distribuzione delle immagini dei container, sulle autorizzazioni e sulla sovrascrittura delle impostazioni di configurazione, vedi Configurazione delle funzioni.](https://docs.aws.amazon.com/lambda/latest/dg/configuration-images.html)

# Tutorial: crea e testa un'applicazione serverless con AWS Lambda
<a name="lambda-build-test-severless-app"></a>

È possibile creare un'applicazione Lambda serverless utilizzando AWS Toolkit for Visual Studio un modello. I modelli di progetto Lambda ne includono uno per un'**applicazione AWS serverless**, che è l' AWS Toolkit for Visual Studio implementazione del [AWS Serverless Application Model](https://github.com/awslabs/serverless-application-model) (SAM).AWS Utilizzando questo tipo di progetto è possibile sviluppare una raccolta di AWS Lambda funzioni e distribuirle con tutte le AWS risorse necessarie come intera applicazione, utilizzandole per AWS CloudFormation orchestrare la distribuzione.

Per i prerequisiti e informazioni sulla configurazione di AWS Toolkit for Visual Studio, vedi [Uso dei modelli AWS Lambda nel Toolkit for AWS Visual Studio](lambda-index.md).

**Topics**
+ [Crea un nuovo progetto di applicazione serverless AWS](#create-a-new-aws-serverless-application-project)
+ [Revisione dei file dell'applicazione Serverless](#examine-the-files-in-the-serverless-application)
+ [Distribuzione dell'applicazione serverless](#deploy-the-serverless-application)
+ [Prova l'applicazione serverless](#test-the-serverless-application)

## Crea un nuovo progetto di applicazione serverless AWS
<a name="create-a-new-aws-serverless-application-project"></a>

AWS I progetti di applicazioni serverless creano funzioni Lambda con un CloudFormation modello serverless. CloudFormation i modelli consentono di definire risorse aggiuntive come database, aggiungere ruoli IAM e distribuire più funzioni contemporaneamente. Ciò differisce dai progetti AWS Lambda, che si concentrano sullo sviluppo e l'implementazione di una singola funzione Lambda.

La procedura seguente descrive come creare un nuovo AWS progetto di applicazione Serverless.

1. Da Visual Studio espandi il menu **File**, espandi **Nuovo**, quindi scegli **Progetto**.

1. Nella finestra di dialogo **Nuovo progetto**, assicurati che le caselle a discesa **Lingua**, **Piattaforma** e **Tipo di progetto** siano impostate su «Tutto...» e inseriscile **aws lambda** nel campo **Cerca**.

1. Seleziona il modello **AWS Serverless Application with Tests (.NET Core - C\$1**).
**Nota**  
È possibile che il modello **AWS Serverless Application with Tests (.NET Core - C\$1)** non compili nella parte superiore dei risultati.

1. Fate clic su **Avanti** per aprire la finestra di dialogo **Configura il nuovo progetto**.

1. Dalla finestra di dialogo **Configura il tuo nuovo progetto**, inserisci **ServerlessPowertools** il **nome**, quindi completa i campi rimanenti secondo le tue preferenze. Scegli il pulsante **Crea** per passare alla finestra di dialogo **Seleziona Blueprint**.

1. Dalla finestra di dialogo **Seleziona Blueprint** scegli **Powertools per** il AWS Lambda blueprint, quindi scegli **Fine** per creare il progetto Visual Studio.

## Revisione dei file dell'applicazione Serverless
<a name="examine-the-files-in-the-serverless-application"></a>

Le seguenti sezioni forniscono una panoramica dettagliata di tre file di applicazioni serverless creati per il progetto:

1. serverless.template

1. Functions.cs

1. aws-lambda-tools-defaults.json

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

Un `serverless.template` file è un AWS CloudFormation modello per dichiarare le funzioni Serverless e altre risorse. AWS Il file incluso in questo progetto contiene una dichiarazione per una singola funzione Lambda che verrà esposta tramite Amazon API Gateway come operazione`HTTP *Get*`. Puoi modificare questo modello per personalizzare la funzione esistente o aggiungere altre funzioni e altre risorse richieste dall'applicazione.

Di seguito è riportato un esempio di un file `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/"
      }
    }
  }
}
```

Nota che molti dei campi di `...AWS:: Serverless::Function...` dichiarazione sono simili ai campi della distribuzione di un progetto Lambda. Powertools Logging, Metrics and Tracing sono configurati tramite le seguenti variabili di ambiente:
+ POWERTOOLS\$1SERVICE\$1NAME= ServerlessGreeting
+ powertools\$1log\$1level=Informazioni
+ POWERTOOLS\$1LOGGER\$1CASE= PascalCase
+ PowerTools\$1Tracer\$1Capture\$1Response=Vero
+ powertools\$1tracer\$1capture\$1error=Vero
+ SPAZIO DEI NOMI POWERTOOLS\$1METRICS= ServerlessGreeting

[Per definizioni e dettagli aggiuntivi sulle variabili di ambiente, consultate il sito Web Powertools for References. AWS Lambda](https://awslabs.github.io/aws-lambda-powertools-dotnet/references/)

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

`Functions.cs`è un file di classe contenente un metodo C\$1 mappato a una singola funzione dichiarata nel file modello. La funzione Lambda risponde ai `HTTP Get` metodi di API Gateway. Di seguito è riportato un esempio del `Functions.cs` file:

```
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`fornisce i valori predefiniti per la procedura guidata di AWS distribuzione all'interno di Visual Studio e i AWS Lambda comandi aggiunti al.NET Core CLI. Di seguito è riportato un esempio del `aws-lambda-tools-defaults.json` file incluso in questo progetto:

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

## Distribuzione dell'applicazione serverless
<a name="deploy-the-serverless-application"></a>

Per distribuire un'applicazione serverless, completa i seguenti passaggi

1. Da **Solution Explorer**, apri il menu contestuale del progetto (fai clic con il pulsante destro del mouse) e scegli **Pubblica su AWS Lambda per** aprire la finestra di dialogo **Pubblica applicazione AWS serverless**.

1. **Nella finestra di dialogo **Pubblica applicazione AWS serverless**, inserisci un nome per il contenitore dello CloudFormation stack nel campo Stack Name.**

1. **Nel campo **S3 Bucket, scegli un bucket** Amazon S3 su cui caricare il pacchetto di applicazioni o scegli il Nuovo...** pulsante e inserisci il nome di un nuovo bucket Amazon S3. Quindi scegli **Pubblica per pubblicare** per distribuire la tua applicazione.
**Nota**  
 CloudFormation Lo stack e Amazon S3 Bucket devono esistere nella stessa regione. AWS Le impostazioni rimanenti per il progetto sono definite nel file. `serverless.template`  
![\[Immagine della finestra di dialogo Pubblica applicazione AWS serverless.\]](http://docs.aws.amazon.com/it_it/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-serverless-03192024.png)

1. La finestra di visualizzazione **dello stack** si apre durante il processo di pubblicazione. Una volta completata la distribuzione, viene visualizzato il campo **Status**:. `CREATE_COMPLETE`  
![\[Immagine della finestra di visualizzazione dello stack di distribuzione in Visual Studio.\]](http://docs.aws.amazon.com/it_it/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-stackview-03192024.png)

## Prova l'applicazione serverless
<a name="test-the-serverless-application"></a>

Una volta completata la creazione dello stack, puoi visualizzare l'applicazione utilizzando l'URL **AWS Serverless**. Se hai completato questo tutorial senza aggiungere funzioni o parametri aggiuntivi, accedendo al tuo URL AWS serverless viene visualizzata la seguente frase nel tuo browser web:. `Hello Powertools for AWS Lambda (.NET)`

# Tutorial: creazione di un'applicazione Amazon Rekognition Lambda
<a name="lambda-rekognition-example"></a>

Questo tutorial mostra come creare un'applicazione Lambda che utilizzi Amazon Rekognition per etichettare gli oggetti Amazon S3 con le etichette rilevate.

Per i prerequisiti e informazioni sulla configurazione di AWS Toolkit for Visual Studio, consulta Using the [AWS Lambda Templates in AWS the Toolkit for Visual Studio](lambda-index.md).

## Creare un progetto di Rekognition Lambda Image Rekognition di Visual Studio.NET Core
<a name="create-a-visual-studio-net-core-lam-image-rekognition-project"></a>

La procedura seguente descrive come creare un'applicazione Amazon Rekognition Lambda da. AWS Toolkit for Visual Studio

**Nota**  
Al momento della creazione, l'applicazione dispone di una soluzione con due progetti: il progetto sorgente che contiene il codice della funzione Lambda da distribuire su Lambda e un progetto di test che utilizza xUnit per testare la funzione localmente.  
A volte Visual Studio non riesce a trovare tutti i NuGet riferimenti per i tuoi progetti. Questo perché i blueprint richiedono dipendenze da cui è necessario recuperare. NuGet Quando vengono creati nuovi progetti, Visual Studio inserisce solo riferimenti locali e non riferimenti remoti da. NuGet Per correggere gli NuGet errori: fai clic con il pulsante destro del mouse sui riferimenti e scegli **Ripristina pacchetti**.

1. Da Visual Studio espandi il menu **File**, espandi **Nuovo**, quindi scegli **Progetto**.

1. Nella finestra di dialogo **Nuovo progetto**, assicurati che le caselle a discesa **Lingua**, **Piattaforma** e **Tipo di progetto** siano impostate su «Tutto...» e inseriscile **aws lambda** nel campo **Cerca**.

1. Seleziona il modello **AWS Lambda with Tests (.NET Core - C\$1**).

1. Fai clic su **Avanti** per aprire la finestra di dialogo **Configura il tuo nuovo progetto**.

1. Nella finestra di dialogo **Configura il nuovo progetto**, inserisci ImageRekognition "" come **nome**, quindi completa i campi rimanenti secondo le tue preferenze. Scegli il pulsante **Crea** per passare alla finestra di dialogo **Seleziona Blueprint**.

1. Nella finestra di dialogo **Seleziona progetto**, scegli il progetto **Detect Image Labels**, quindi scegli **Fine** per creare il progetto Visual Studio.
**Nota**  
Questo modello fornisce codice per ascoltare gli eventi di Amazon S3 e utilizza Amazon Rekognition per rilevare le etichette e aggiungerle all'oggetto S3 come tag.

## Revisione dei file di progetto
<a name="examine-the-files"></a>

Le seguenti sezioni esaminano questi file di progetto:

1. `Function.cs`

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

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

All'interno del `Function.cs` file, il primo segmento di codice è l'attributo assembly, situato nella parte superiore del file. Per impostazione predefinita, Lambda accetta solo parametri di input e tipi di tipo restituiti. `System.IO.Stream` È necessario registrare un serializzatore per utilizzare le classi tipizzate per i parametri di input e i tipi restituiti. L'attributo assembly registra il serializzatore JSON Lambda, che viene `Newtonsoft.Json` utilizzato per convertire i flussi in classi tipizzate. È possibile impostare il serializzatore a livello di assembly o metodo.

Di seguito è riportato un esempio dell'attributo 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 ha due costruttori. Il primo è un costruttore predefinito che viene utilizzato quando Lambda richiama la tua funzione. Questo costruttore crea i client di servizi Amazon S3 e Amazon Rekognition. Il costruttore recupera anche le AWS credenziali per questi client dal ruolo IAM assegnato alla funzione al momento della distribuzione. La AWS regione per i client è impostata sulla regione in cui è in esecuzione la funzione Lambda. In questo modello, desideri aggiungere tag all'oggetto Amazon S3 solo se il servizio Amazon Rekognition ha un livello minimo di fiducia sull'etichetta. Questo costruttore controlla la variabile di ambiente per determinare il livello di confidenza `MinConfidence` accettabile. È possibile impostare questa variabile di ambiente quando si distribuisce la funzione Lambda.

Di seguito è riportato un esempio del costruttore di prima classe in: `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'esempio seguente dimostra come il secondo costruttore può essere utilizzato per i test. Il progetto di test configura i propri client S3 e Rekognition e li trasmette:

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

Di seguito è riportato un esempio del metodo all'interno del `FunctionHandler` file. `Function.cs`

```
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`è il metodo che Lambda chiama dopo aver costruito l'istanza. Notate che il parametro di input è di tipo `S3Event` e non a. `Stream` Puoi farlo grazie al serializzatore JSON Lambda registrato. `S3Event`Contiene tutte le informazioni sull'evento attivato in Amazon S3. La funzione esegue un ciclo su tutti gli oggetti S3 che facevano parte dell'evento e indica a Rekognition di rilevare le etichette. Dopo che le etichette sono state rilevate, vengono aggiunte come tag all'oggetto S3.

**Nota**  
Il codice contiene chiamate a. `Console.WriteLine()` Quando la funzione è in esecuzione in Lambda, tutte le chiamate vengono `Console.WriteLine()` reindirizzate ad Amazon Logs. CloudWatch 

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

Il `aws-lambda-tools-defaults.json` file contiene i valori predefiniti che il blueprint ha impostato per precompilare alcuni campi nella procedura guidata di distribuzione. È anche utile per impostare le opzioni della riga di comando per l'integrazione con.NET Core CLI.

Per accedere all'integrazione CLI.NET Core, accedi alla directory del progetto della funzione e digita. **dotnet lambda help**

**Nota**  
Il gestore di funzioni indica quale metodo Lambda deve chiamare in risposta alla funzione richiamata. Il formato di questo campo è:. `<assembly-name>::<full-type-name>::<method-name>` Il namespace deve essere incluso nel nome del tipo.

## Implementa la funzione
<a name="deploy-the-function"></a>

La procedura seguente descrive come distribuire la funzione Lambda.

1. **Da **Solution Explorer**, fai clic con il pulsante destro del mouse sul progetto Lambda e scegli **Pubblica su AWS Lambda** per aprire la finestra Carica su. AWS Lambda**
**Nota**  
I valori preimpostati vengono recuperati dal file. `aws-lambda-tools-defaults.json`

1. Dalla AWS Lambda finestra **Carica su**, inserisci un nome nel campo **Nome funzione**, quindi scegli il pulsante **Avanti** per passare alla finestra **Dettagli della funzione avanzata**.
**Nota**  
Questo esempio utilizza il **nome della funzione****ImageRekognition**.  
![\[AWS Lambda function upload interface with package type, runtime, and configuration options.\]](http://docs.aws.amazon.com/it_it/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-03192024.png)

1. Dalla finestra **Advanced Function Details**, seleziona un ruolo IAM che autorizzi il codice ad accedere alle tue risorse Amazon S3 e Amazon Rekognition.
**Nota**  
Se stai seguendo questo esempio, seleziona il ruolo. `AWSLambda_FullAccess`

1. Imposta la variabile `MinConfidence` di ambiente su 60, quindi scegli **Carica** per avviare il processo di distribuzione. Il processo di pubblicazione è completo quando la vista **Function** viene visualizzata in **AWS Explorer**.  
![\[AWS Lambda function configuration interface showing permissions, execution, and environment settings.\]](http://docs.aws.amazon.com/it_it/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-advanced-03192024.png)

1. Dopo una distribuzione riuscita, configura Amazon S3 per inviare i suoi eventi alla tua nuova funzione accedendo alla scheda **Event** Sources.

1. Dalla scheda **Event Sources**, scegli il pulsante **Aggiungi**, quindi seleziona il bucket Amazon S3 per connetterti alla tua funzione Lambda.
**Nota**  
Il bucket deve trovarsi nella stessa AWS regione della funzione Lambda.

## Esegui il test della funzione
<a name="test-the-function"></a>

**Ora che la funzione è stata implementata e un bucket S3 è configurato come sorgente di eventi, apri il browser del bucket S3 dall'Explorer per il AWS bucket selezionato.** Quindi carica alcune immagini.

Una volta completato il caricamento, puoi confermare che la tua funzione è stata eseguita guardando i log dalla visualizzazione delle funzioni. **In alternativa, fate clic con il pulsante destro del mouse sulle immagini nel browser bucket e scegliete Proprietà.** Nella scheda **Tag**, puoi visualizzare i tag che sono stati applicati all'oggetto.

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


# Tutorial: Utilizzo di Amazon Logging Frameworks AWS Lambda per creare log di applicazioni
<a name="cw-log-frameworks"></a>

Puoi usare Amazon CloudWatch Logs per monitorare, archiviare e accedere ai log della tua applicazione. Per inserire i dati di log in CloudWatch Logs, usa un AWS SDK o installa l'agente CloudWatch Logs per monitorare determinate cartelle di log. CloudWatch Logs è integrato con diversi framework di logging.NET diffusi, semplificando i flussi di lavoro.

Per iniziare a utilizzare i framework di registrazione CloudWatch Logs e.NET, aggiungi il NuGet pacchetto e la sorgente di output CloudWatch Logs appropriati all'applicazione, quindi usa la tua libreria di registrazione come faresti normalmente. Ciò consente all'applicazione di registrare i messaggi con il framework.NET, inviarli a CloudWatch Logs e visualizzare i messaggi di registro dell'applicazione nella console Logs. CloudWatch Puoi anche configurare metriche e allarmi dalla console CloudWatch Logs, in base ai messaggi di registro dell'applicazione.

I framework di logging.NET supportati includono:
+ **NLog**[: Per visualizzarlo, consulta il pacchetto nuget.org. NLog ](https://www.nuget.org/packages/AWS.Logger.NLog)
+ **Log4net**[: per visualizzarlo, vedi il pacchetto Log4net di nuget.org.](https://www.nuget.org/packages/AWS.Logger.NLog)
+ **ASP.NET Core Logging Framework: per visualizzare, consulta il pacchetto nuget.org ASP.NET Core logging Framework**[.](https://www.nuget.org/packages/AWS.Logger.AspNetCore/)

Di seguito è riportato un esempio di `NLog.config` file che abilita sia CloudWatch i log che la console come output per i messaggi di registro aggiungendo il pacchetto e la destinazione. `AWS.Logger.NLog` NuGet AWS `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>
```



I plugin di registrazione sono tutti basati su AWS SDK per .NET e autenticano le AWS credenziali in un processo simile all'SDK. L'esempio seguente descrive in dettaglio le autorizzazioni richieste dalle credenziali del plug-in di registrazione per accedere ai registri: CloudWatch 

**Nota**  
I plugin di AWS logging.NET sono un progetto open source. Per ulteriori informazioni, esempi e istruzioni, consultate gli argomenti relativi agli [esempi](https://github.com/aws/aws-logging-dotnet/tree/master/samples) e alle [istruzioni](https://github.com/aws/aws-logging-dotnet/blob/master/README.md) nel repository [AWS Logging .NET. GitHub](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:*:*:*"
      ]
    }
  ]
}
```

------