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. Utilizzando Docker, hai un maggiore controllo sul tuo runtime. Ad esempio, puoi scegliere runtime personalizzati come. NET8.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.
Crea un Visual Studio. NETProgetto Core Lambda
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 Visual Studio. NETProgetto Core Lambda
-
Da Visual Studio espandi il menu File, espandi Nuovo, quindi scegli Progetto.
-
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 progetto AWS Lambda (. NETModello Core - C#). -
Nel campo Nome progetto, inserisci
AWSLambdaDocker
, specifica la posizione del file, quindi scegli Crea. -
Nella pagina Seleziona progetto, scegli. NETBlueprint 8 (Container Image), quindi scegli Fine per creare il progetto Visual Studio. È ora possibile esaminare la struttura e il codice del progetto.
Revisione dei file di progetto
Le seguenti sezioni esaminano i tre file di progetto creati da. NETBlueprint 8 (Container Image):
-
Dockerfile
-
aws-lambda-tools-defaults.json
-
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. NETRuntime, Lambda runtime e uno script di shell che fornisce un punto di ingresso per Lambda. NETprocesso. -
WORKDIR
: stabilisce la cartella 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 da. NETBlueprint 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. NETNucleo. CLI L'elenco seguente descrive i campi che è possibile impostare nel aws-lambda-tools-defaults.json
file.
-
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'impostazioneimage-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 da. NETBlueprint 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 (AmazonECR). Amazon ECR è un registro di container Docker completamente gestito che usi 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
-
Da Solution Explorer, apri il menu contestuale per (fai clic con il pulsante destro del mouse) per il progetto, quindi scegli Pubblica AWS Lambda per aprire la finestra Upload Lambda Function.
-
Dalla pagina Carica funzione Lambda, procedi come segue:
-
Per Tipo di pacchetto,
Image
è stato selezionato automaticamente come tipo di pacchetto perché la procedura guidata di pubblicazione ha rilevato un elementoDockerfile
all'interno del progetto. -
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
-
Per Descrizione, inserisci il testo da visualizzare con l'istanza in AWS Management Console.
-
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 CMD istruzione all'interno del Dockerfile. L'immissione di Image Command è facoltativa solo SE
CMD
siDockerfile
include un'istruzione su come avviare la funzione Lambda. -
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 a quell'immagine AmazonECR.
-
Per Image Tag, inserisci un tag Docker da associare all'immagine nel repository.
-
Scegli Next (Successivo).
-
-
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'IAM ListPolicies azione, altrimenti l'elenco dei nomi dei ruoli sarà vuoto.
-
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 ECR repository Amazon 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.
-
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. -
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
-
Nota le opzioni di configurazione aggiuntive specifiche dell'immagine nella scheda Configurazione. Questa scheda fornisce un modo per sovrascrivere il
ENTRYPOINT
CMD
, eWORKDIR
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 utilizzando questo esempio, ricordati di eliminare la funzione e l'ECRimmagine che sono state distribuite 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 AWS nodo. 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.