Implemente las funciones de Lambda C# utilizando AWS CDK - AWS Lambda

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

  1. Cree un directorio de proyectos para la aplicación de ejemplo y navegue hasta él.

    mkdir hello-world cd hello-world
  2. 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
  3. 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 denominada HelloWorldLambda mediante la plantilla lambda.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
  4. Abra el archivo HelloWorldStack.cs del directorio src/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 comando dotnet lambda package se usa para compilar y generar el archivo zip.

  5. Para implementar la aplicación, ejecute el siguiente comando.

    cdk deploy
  6. Invoque la función de Lambda implementada mediante la CLI de .NET Lambda.

    dotnet lambda invoke-function HelloWorldFunction -p "hello world"
  7. 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: