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à.
Distribuisci le funzioni Lambda C# usando 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 moderni come .NET. AWS CDK i progetti vengono eseguiti per generare AWS CloudFormation modelli che vengono poi utilizzati per distribuire il codice.
Per creare e distribuire un'applicazione Hello world .NET di esempio utilizzando il AWS 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
- .NET 8 SDK
-
Installa .NET 8
SDK e Runtime. - AWS CDK versione 2
-
Per informazioni su come installare la versione più recente di, AWS CDK consulta la Guida per sviluppatori introduttiva alla AWS Cloud Development Kit (AWS CDK) versione 2. AWS CDK
Implementa un'applicazione di esempio AWS CDK
-
Crea una directory di progetto per l'applicazione di esempio e passa ad essa.
mkdir hello-world cd hello-world
-
Inizializza una nuova AWS CDK applicazione eseguendo il comando seguente.
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
-
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 denominataHelloWorldLambda
utilizzando il modellolambda.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
-
Apri il file
HelloWorldStack.cs
nella directorysrc/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 comandodotnet lambda package
viene utilizzato per compilare e generare il file zip. -
Per implementare l'applicazione, emetti il comando riportato di seguito.
cdk deploy
-
Invoca la funzione Lambda implementata utilizzando la CLI .NET Lambda.
dotnet lambda invoke-function HelloWorldFunction -p "hello world"
-
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 sull'utilizzo AWS CDK per creare e distribuire funzioni Lambda usando.NET, consulta le seguenti risorse: