AWS Lambda Progetto di base per la creazione di un'immagine Docker - AWS Toolkit con Amazon Q

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 Progetto di base per la creazione di un'immagine Docker

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 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 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 Studioargomento di questa Guida per l'utente.

Creare un progetto Lambda di Visual Studio .NET Core

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.

  2. 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#).

  3. Nel campo Nome progetto, inserisciAWSLambdaDocker, specifica la posizione del file, quindi scegli Crea.

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

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

  1. Dockerfile

  2. aws-lambda-tools-defaults.json

  3. Function.cs

1. Dockerfile

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à unENTRYPOINT, 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

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

Il Function.cs file definisce le funzioni c# 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

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.

  2. Dalla pagina Upload Lambda Function, procedi come segue:

    Schermata di caricamento per la pubblicazione della funzione Lambda basata su immagini su AWS
    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.

    2. 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. AWS Management Console

    3. Per Descrizione, inserisci il testo da visualizzare con l'istanza in AWS Management Console.

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

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

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

    7. Seleziona Successivo.

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

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

  5. 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.
  6. 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

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

Pulizia

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

Per informazioni sulla creazione e il test di immagini Lambda, consulta Using Container Images with Lambda.

Per informazioni sulla distribuzione delle immagini dei container, sulle autorizzazioni e sulla sovrascrittura delle impostazioni di configurazione, vedi Configurazione delle funzioni.