Implementazione di funzioni Lambda C# tramite AWS CDK - AWS Lambda

Implementazione di funzioni Lambda C# tramite AWS CDK

AWS Cloud Development Kit (AWS CDK) è un framework di sviluppo software open source per definire l'infrastruttura cloud come codice con linguaggi di programmazione e framework di programmazione moderni come .NET. I progetti AWS CDK vengono eseguiti per generare modelli CloudFormation che vengono poi utilizzati per implementare il codice.

Per creare e implementare un'applicazione .NET Hello world di esempio utilizzando ilAWS CDK, segui le istruzioni nelle sezioni seguenti. L'applicazione di esempio implementa un backend di API di base che consiste di un endpoint Gateway API e di una funzione Lambda. Quando si invia una richiesta HTTP GET all'endpoint, Gateway API richiama la funzione Lambda. La funzione restituisce un messaggio "hello world", insieme all'indirizzo IP dell'istanza Lambda che elabora la richiesta.

Prerequisiti

SDK .NET 8

Installa l'SDK .NET 8 e Runtime.

AWS CDK versione 2

Per informazioni su come installare la versione più recente di AWS CDK, consulta la Nozioni di base sul AWS CDK nella Guida per gli sviluppatori di AWS Cloud Development Kit (AWS CDK) v2.

Implementare un'applicazione AWS CDK di esempio

  1. Crea una directory di progetto per l'applicazione di esempio e passa ad essa.

    mkdir hello-world cd hello-world
  2. Inizializza una nuova applicazione AWS CDK eseguendo il comando riportato di seguito.

    cdk init app --language csharp

    Questo comando crea i seguenti file e directory nella directory di progetto.

    ├── README.md ├── cdk.json └── src ├── HelloWorld │   ├── GlobalSuppressions.cs │   ├── HelloWorld.csproj │   ├── HelloWorldStack.cs │   └── Program.cs └── HelloWorld.sln
  3. Apri la directory src e crea una nuova funzione Lambda utilizzando la CLI .NET. Questa è la funzione che implementerai utilizzando il AWS CDK. In questo esempio, viene creata una funzione Hello world denominata HelloWorldLambda utilizzando il modello lambda.EmptyFunction.

    cd src dotnet new lambda.EmptyFunction -n HelloWorldLambda

    Dopo questo passaggio, la struttura di directory all'interno della directory del progetto dovrebbe avere un aspetto simile al seguente.

    ├── README.md ├── cdk.json └── src ├── HelloWorld │   ├── GlobalSuppressions.cs │   ├── HelloWorld.csproj │   ├── HelloWorldStack.cs │   └── Program.cs ├── HelloWorld.sln └── HelloWorldLambda ├── src │   └── HelloWorldLambda │   ├── Function.cs │   ├── HelloWorldLambda.csproj │   ├── Readme.md │   └── aws-lambda-tools-defaults.json └── test └── HelloWorldLambda.Tests ├── FunctionTest.cs └── HelloWorldLambda.Tests.csproj
  4. Apri il file HelloWorldStack.cs nella directory src/HelloWorld. Sostituisci il contenuto del file con il seguente codice.

    using Amazon.CDK; using Amazon.CDK.AWS.Lambda; using Amazon.CDK.AWS.Logs; using Constructs; namespace CdkTest { public class HelloWorldStack : Stack { internal HelloWorldStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { var buildOption = new BundlingOptions() { Image = Runtime.DOTNET_8.BundlingImage, User = "root", OutputType = BundlingOutput.ARCHIVED, Command = new string[]{ "/bin/sh", "-c", " dotnet tool install -g Amazon.Lambda.Tools"+ " && dotnet build"+ " && dotnet lambda package --output-package /asset-output/function.zip" } }; var helloWorldLambdaFunction = new Function(this, "HelloWorldFunction", new FunctionProps { Runtime = Runtime.DOTNET_8, MemorySize = 1024, LogRetention = RetentionDays.ONE_DAY, Handler = "HelloWorldLambda::HelloWorldLambda.Function::FunctionHandler", Code = Code.FromAsset("./src/HelloWorldLambda/src/HelloWorldLambda", new Amazon.CDK.AWS.S3.Assets.AssetOptions { Bundling = buildOption }), }); } } }

    Questo è il codice per compilare e raggruppare il codice dell'applicazione, nonché la definizione della funzione Lambda stessa. L'oggetto BundlingOptions consente di creare un file zip, insieme a una serie di comandi utilizzati per generare il contenuto del file zip. In questa istanza, il comando dotnet lambda package viene utilizzato per compilare e generare il file zip.

  5. Per implementare l'applicazione, emetti il comando riportato di seguito.

    cdk deploy
  6. Invoca la funzione Lambda implementata utilizzando la CLI .NET Lambda.

    dotnet lambda invoke-function HelloWorldFunction -p "hello world"
  7. Una volta terminato il test, potrai eliminare le risorse create (a meno che non si desideri mantenerle). Per eliminare le risorse, emetti il seguente comando.

    cdk destroy

Passaggi successivi

Per ulteriori informazioni su come utilizzare AWS CDK per creare e implementare le funzioni Lambda con .NET, consulta le seguenti risorse: