Implemente las funciones de Lambda C# utilizando AWS CDK
AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software de código abierto para definir la infraestructura de nube como código con marcos y lenguajes de programación modernos, como .NET. Los proyectos AWS CDK se ejecutan para generar plantillas AWS CloudFormation que luego se utilizan para implementar el código.
Para crear e implementar un ejemplo de aplicación Hello world .NET mediante AWS CDK, siga las instrucciones de las siguientes secciones. La aplicación de ejemplo implementa un backend de API básico que consta de un punto de conexión API Gateway y una función de Lambda. Cuando se envía una solicitud HTTP GET al punto de conexión, API Gateway invoca la función de Lambda. La función devuelve un mensaje “Hello world”, junto con la dirección IP de la instancia Lambda que procesa la solicitud.
Requisitos previos
- SDK para .NET 8
-
Instale el SDK y el tiempo de ejecución de .NET 8
. - Versión 2 de la AWS CDK
-
Para obtener información sobre cómo instalar la última versión de AWS CDK consulte Introducción a la AWS CDK en la Guía para desarrolladores de AWS Cloud Development Kit (AWS CDK) versión 2..
Implementar una aplicación de ejemplo de AWS CDK
-
Cree un directorio de proyectos para la aplicación de ejemplo y navegue hasta él.
mkdir hello-world cd hello-world
-
Inicialice una nueva aplicación AWS CDK mediante la ejecución del siguiente comando.
cdk init app --language csharp
El comando crea los siguientes archivos y directorios en el directorio del proyecto
├── README.md ├── cdk.json └── src ├── HelloWorld │ ├── GlobalSuppressions.cs │ ├── HelloWorld.csproj │ ├── HelloWorldStack.cs │ └── Program.cs └── HelloWorld.sln
-
Abra el directorio
src
y cree una nueva función de Lambda mediante la CLI de .NET. Esta es la función que implementará mediante AWS CDK. En este ejemplo, se crea una función Hello world denominadaHelloWorldLambda
mediante la plantillalambda.EmptyFunction
.cd src dotnet new lambda.EmptyFunction -n HelloWorldLambda
Después de este paso, la estructura dentro del directorio de proyectos debería tener el siguiente aspecto.
├── 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
-
Abra el archivo
HelloWorldStack.cs
del directoriosrc/HelloWorld
. Reemplace el contenido del archivo por lo siguiente.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 }), }); } } }
Este es el código para compilar y empaquetar el código de la aplicación, así como la definición de la propia función de Lambda. El objeto
BundlingOptions
permite crear un archivo zip junto con un conjunto de comandos que se utilizan para generar el contenido del archivo zip. En este caso, el comandodotnet lambda package
se usa para compilar y generar el archivo zip. -
Para implementar la aplicación, ejecute el siguiente comando.
cdk deploy
-
Invoque la función de Lambda implementada mediante la CLI de .NET Lambda.
dotnet lambda invoke-function HelloWorldFunction -p "hello world"
-
Al acabar las prueba, a menos que desee retener los recursos que creó, puede eliminarlos. Use el siguiente comando para eliminar los recursos.
cdk destroy
Siguientes pasos
Para obtener más información sobre AWS CDK para crear e implementar funciones de Lambda mediante .NET, consulte los siguientes recursos: