Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Distribuzione delle funzioni .NET Lambda con immagini di container

Modalità Focus
Distribuzione delle funzioni .NET Lambda con immagini di container - AWS Lambda

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

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

Esistono tre modi per creare un'immagine di container per una funzione Lambda in .NET:

Suggerimento

Per ridurre il tempo necessario all'attivazione delle funzioni del container Lambda, consulta Utilizzo di compilazioni a più fasi nella documentazione Docker. Per creare immagini di container efficienti, segui le best practice per scrivere file Docker.

Questa pagina spiega come creare, testare e implementare le immagini di container per Lambda.

AWS immagini di base per.NET

AWS fornisce le seguenti immagini di base per.NET:

Tag Runtime Sistema operativo Dockerfile Definizione come obsoleto

9

.NET 9 Amazon Linux 2023 Dockerfile per.NET 9 su GitHub

Non programmato

8

.NET 8 Amazon Linux 2023 Dockerfile per.NET 8 attivo GitHub

10 novembre 2026

Archivio Amazon ECR: gallery.ecr. aws/lambda/dotnet

Utilizzo di un'immagine AWS di base per.NET

Prerequisiti

Per completare le fasi riportate in questa sezione, è necessario:

Creazione e implementazione di un'immagine utilizzando un'immagine di base

Nei passaggi seguenti, utilizzerai Amazon.Lambda.Templates e Amazon.Lambda.Tools per creare un progetto .NET. Quindi, crei un'immagine Docker, carichi l'immagine su Amazon ECR e la implementi su una funzione Lambda.

  1. Installa il pacchetto Amazon.Lambda.Templates. NuGet

    dotnet new install Amazon.Lambda.Templates
  2. Crea un progetto .NET utilizzando il modello lambda.image.EmptyFunction.

    dotnet new lambda.image.EmptyFunction --name MyFunction --region us-east-1
  3. Passa alla directory MyFunction/src/MyFunction. Qui sono archiviati i file del progetto. Esamina i seguenti file di log:

    • aws-lambda-tools-defaults.json: in questo file si specificano le opzioni della riga di comando quando si distribuisce la funzione Lambda.

    • Function.cs: il codice della funzione del gestore Lambda. Si tratta di un modello C# che include la libreria Amazon.Lambda.Core e un attributo LambdaSerializer predefiniti. Per ulteriori informazioni sui requisiti e sulle opzioni di serializzazione, consulta la pagina Serializzazione nelle funzioni Lambda C#. A fini di test, puoi utilizzare il codice fornito o sostituirlo con il tuo codice personalizzato.

    • MyFunction.csproj — Un file di progetto.NET, che elenca i file e gli assembly che compongono l'applicazione.

    • Readme.md: questo file contiene ulteriori informazioni sulla funzione Lambda di esempio.

  4. Esamina il Dockerfile nella directory src/MyFunction. A fini di test, puoi utilizzare il Dockerfile fornito o sostituirlo con un file personalizzato. Se utilizzi un file personalizzato, assicurati di:

    • Imposta la proprietà FROM sull'URI dell'immagine di base. La tua versione .NET deve corrispondere alla versione dell'immagine di base.

    • Imposta l'argomento CMD specificando il gestore della funzione Lambda. Questo dovrebbe corrispondere a image-command in aws-lambda-tools-defaults.json.

    Nota che l'esempio Dockerfile non include un'istruzione USER. Quando implementi un'immagine di container su Lambda, Lambda definisce automaticamente un utente Linux predefinito con autorizzazioni con privilegi minimi. Questo è diverso dal comportamento standard di Docker, che per impostazione predefinita è l'utente root quando non viene fornita alcuna istruzione USER.

    Esempio Dockerfile
    # You can also pull these images from DockerHub amazon/aws-lambda-dotnet:8 FROM public.ecr.aws/lambda/dotnet:8 # Copy function code to Lambda-defined environment variable COPY publish/* ${LAMBDA_TASK_ROOT} # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile) CMD [ "MyFunction::MyFunction.Function::FunctionHandler" ]
  5. Installa lo strumento globale .NET Amazon.Lambda.Tools.

    dotnet tool install -g Amazon.Lambda.Tools

    Se Amazon.Lambda.Tools è già installato, assicurati di disporre della versione più recente.

    dotnet tool update -g Amazon.Lambda.Tools
  6. Passa alla directory MyFunction/src/MyFunction, se non lo hai ancora fatto.

    cd src/MyFunction
  7. Utilizza Amazon.Lambda.Tools per creare l'immagine Docker, trasferirla in un nuovo repository Amazon ECR e implementare la funzione Lambda.

    Per --function-role, specifica il nome del ruolo, non il nome della risorsa Amazon (ARN), del ruolo di esecuzione della funzione. Ad esempio lambda-role.

    dotnet lambda deploy-function MyFunction --function-role lambda-role

    Per ulteriori informazioni sullo strumento globale Amazon.Lambda.Tools, consulta l'archivio Extensions AWS for .NET CLI su. GitHub

  8. Richiama la funzione.

    dotnet lambda invoke-function MyFunction --payload "Testing the function"

    In caso di esito positivo, viene visualizzato quanto segue:

    Payload: "TESTING THE FUNCTION" Log Tail: START RequestId: id Version: $LATEST END RequestId: id REPORT RequestId: id Duration: 0.99 ms Billed Duration: 1 ms Memory Size: 256 MB Max Memory Used: 12 MB
  9. Elimina la funzione Lambda.

    dotnet lambda delete-function MyFunction

Utilizzo di un'immagine di base alternativa con il client di interfaccia di runtime

Se utilizzi un'immagine di base solo per il sistema operativo o un'immagine di base alternativa, devi includere il client dell'interfaccia di runtime nell'immagine. Il client dell'interfaccia di runtime estende l'Utilizzo dell'API di runtime Lambda per runtime personalizzati, che gestisce l'interazione tra Lambda e il codice della funzione.

L'esempio seguente mostra come creare un'immagine contenitore per.NET utilizzando un'immagine non di AWS base e come aggiungere Amazon.Lambda. RuntimeSupport pacchetto, che è il client dell'interfaccia di runtime Lambda per .NET. Il Dockerfile di esempio utilizza l'immagine di base Microsoft .NET 8.

Prerequisiti

Per completare le fasi riportate in questa sezione, è necessario:

Creazione e implementazione di un'immagine utilizzando un'immagine di base alternativa

  1. Installa il pacchetto Amazon.Lambda.Templates. NuGet

    dotnet new install Amazon.Lambda.Templates
  2. Crea un progetto .NET utilizzando il modello lambda.CustomRuntimeFunction. Questo modello include Amazon.Lambda. RuntimeSupportpacchetto.

    dotnet new lambda.CustomRuntimeFunction --name MyFunction --region us-east-1
  3. Passa alla directory MyFunction/src/MyFunction. Qui sono archiviati i file del progetto. Esamina i seguenti file di log:

    • aws-lambda-tools-defaults.json: in questo file si specificano le opzioni della riga di comando quando si distribuisce la funzione Lambda.

    • Function.cs: il codice contiene una classe con un metodo Main che inizializza la libreria Amazon.Lambda.RuntimeSupport come bootstrap. Il metodo Main sarà il punto di ingresso per il processo della funzione. Il metodo Main racchiude il gestore della funzione in un wrapper con cui il bootstrap può funzionare. Per ulteriori informazioni, consulta Using Amazon.Lambda. RuntimeSupport come libreria di classi nel repository. GitHub

    • MyFunction.csproj — Un file di progetto.NET, che elenca i file e gli assembly che compongono l'applicazione.

    • Readme.md: questo file contiene ulteriori informazioni sulla funzione Lambda di esempio.

  4. Apri il file aws-lambda-tools-defaults.json e aggiungi le righe seguenti.

    "package-type": "image", "docker-host-build-output-dir": "./bin/Release/lambda-publish"
    • package-type: definisce il pacchetto di implementazione come immagine di container.

    • docker-host-build-output-dir: imposta la directory di output per il processo di compilazione.

    Esempio 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": "", "region": "us-east-1", "configuration": "Release", "function-runtime": "provided.al2023", "function-memory-size": 256, "function-timeout": 30, "function-handler": "bootstrap", "msbuild-parameters": "--self-contained true", "package-type": "image", "docker-host-build-output-dir": "./bin/Release/lambda-publish" }
  5. Crea un Dockerfile nella directory MyFunction/src/MyFunction. Il seguente Dockerfile di esempio utilizza un'immagine di base Microsoft .NET anziché un'immagine di base AWS.

    • Imposta la proprietà FROM sull'identificativo dell'immagine di base. La tua versione .NET deve corrispondere alla versione dell'immagine di base.

    • Utilizza il comando COPY per copiare la funzione nella directory /var/task.

    • Imposta l'ENTRYPOINT sul modulo su cui desideri che il container Docker venga eseguito all'avvio. In questo caso, il modulo è il bootstrap, che inizializza la libreria Amazon.Lambda.RuntimeSupport.

    Nota che l'esempio Dockerfile non include un'istruzione USER. Quando implementi un'immagine di container su Lambda, Lambda definisce automaticamente un utente Linux predefinito con autorizzazioni con privilegi minimi. Questo è diverso dal comportamento standard di Docker, che per impostazione predefinita è l'utente root quando non viene fornita alcuna istruzione USER.

    Esempio Dockerfile
    # You can also pull these images from DockerHub amazon/aws-lambda-dotnet:8 FROM mcr.microsoft.com/dotnet/runtime:8.0 # Set the image's internal work directory WORKDIR /var/task # Copy function code to Lambda-defined environment variable COPY "bin/Release/net8.0/linux-x64" . # Set the entrypoint to the bootstrap ENTRYPOINT ["/usr/bin/dotnet", "exec", "/var/task/bootstrap.dll"]
  6. Installa lo strumento globale .NET Core Amazon.Lambda.Tools.

    dotnet tool install -g Amazon.Lambda.Tools

    Se Amazon.Lambda.Tools è già installato, assicurati di disporre della versione più recente.

    dotnet tool update -g Amazon.Lambda.Tools
  7. Utilizza Amazon.Lambda.Tools per creare l'immagine Docker, trasferirla in un nuovo repository Amazon ECR e implementare la funzione Lambda.

    Per --function-role, specifica il nome del ruolo, non il nome della risorsa Amazon (ARN), del ruolo di esecuzione della funzione. Ad esempio lambda-role.

    dotnet lambda deploy-function MyFunction --function-role lambda-role

    Per ulteriori informazioni sull'estensione CLI di Amazon.Lambda.Tools, consulta l'archivio Extensions for .NET CLI su.AWS GitHub

  8. Richiama la funzione.

    dotnet lambda invoke-function MyFunction --payload "Testing the function"

    In caso di esito positivo, viene visualizzato quanto segue:

    Payload: "TESTING THE FUNCTION" Log Tail: START RequestId: id Version: $LATEST END RequestId: id REPORT RequestId: id Duration: 0.99 ms Billed Duration: 1 ms Memory Size: 256 MB Max Memory Used: 12 MB
  9. Elimina la funzione Lambda.

    dotnet lambda delete-function MyFunction

Argomento successivo:

Compilazione AOT nativa

Argomento precedente:

ASP.NET
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.