Implemente las funciones de Lambda C# utilizando AWS SAM
AWS Serverless Application Model (AWS SAM) es un conjunto de herramientas que ayuda a agilizar el proceso de creación y ejecución de aplicaciones sin servidor en AWS. Defina los recursos de su aplicación en una plantilla YAML o JSON y utilice la interfaz de la línea de comandos de AWS SAM (AWS SAM CLI) para crear, empaquetar e implementar sus aplicaciones. Al crear una función de Lambda a partir de una plantilla de AWS SAM, AWS SAM crea automáticamente un paquete de implementación .zip o una imagen de contenedor con el código de la función y las dependencias que especifique. Después, AWS SAM implementa la función mediante una pila AWS CloudFormation.zip Para obtener más información sobre el uso de AWS SAM para crear e implementar funciones de Lambda, consulte Introducción a AWS SAM en la Guía para desarrolladores de AWS Serverless Application Model.
Los siguientes pasos muestran cómo descargar, crear e implementar una aplicación Hello World .NET de muestra mediante AWS SAM. Esta aplicación de muestra utiliza una función de Lambda y un punto de conexión de Amazon API Gateway para implementar un backend de API básico. Cuando envía una solicitud GET de HTTP a su punto de conexión de API Gateway, la última invoca la función de Lambda. La función devuelve un mensaje “Hello world”, junto con la dirección IP de la instancia de la función de Lambda que procesa la solicitud.
Al crear e implementar la aplicación mediante AWS SAM, entre bastidores, la CLI AWS SAM utiliza el comando dotnet lambda package
para empaquetar los grupos de códigos de las funciones de Lambda individuales.
Requisitos previos
- SDK para .NET 8
-
Instale el SDK y el tiempo de ejecución de .NET 8
. - Versión 1.39 o posterior de la CLI de AWS SAM
-
Para instalar la última versión de la CLI de AWS SAM, consulte Instalación de la CLI de AWS SAM.
Implementar una aplicación de ejemplo de AWS SAM
-
Inicialice la aplicación con la plantilla Hello world de .NET con el siguiente comando.
sam init --app-template hello-world --name sam-app \ --package-type Zip --runtime dotnet8
Este comando crea los siguientes archivos y directorios en el directorio de su proyecto.
└── sam-app ├── README.md ├── events │ └── event.json ├── omnisharp.json ├── samconfig.toml ├── src │ └── HelloWorld │ ├── Function.cs │ ├── HelloWorld.csproj │ └── aws-lambda-tools-defaults.json ├── template.yaml └── test └── HelloWorld.Test ├── FunctionTest.cs └── HelloWorld.Tests.csproj
-
Navegue hasta el directorio que contiene el
template.yaml file
. Este archivo es una plantilla que define los recursos AWS de la aplicación, incluida la función de Lambda y una API de API Gateway.cd sam-app
-
Para crear la fuente de la aplicación, ejecute el siguiente comando.
sam build
-
Para implementar la aplicación en AWS, ejecute el siguiente comando.
sam deploy --guided
Este comando empaqueta e implementa la aplicación con la siguiente serie de solicitudes. Para aceptar las opciones predeterminadas, pulse Enter.
nota
Puede que HelloWorldFunction no tenga definida la autorización, ¿está bien? Asegúrese de ingresar
y
.-
Nombre de la pila: el nombre de la pila para la implementación en AWS CloudFormation. Este nombre debe ser exclusivo para Cuenta de AWS y Región de AWS.
-
Región de AWS: El Región de AWS en el que desea implementar su aplicación.
-
Confirme los cambios antes de la implementación: seleccione “Sí” para revisar manualmente cualquier conjunto de cambios antes de que AWS SAM implemente los cambios en la aplicación. Si selecciona “No”, la CLI AWS SAM implementa automáticamente los cambios en las aplicaciones.
-
Permitir la creación de roles de IAM en la CLI de SAM: muchas plantillas AWS SAM, incluida la de Hello world en este ejemplo, crean roles (de IAM) AWS Identity and Access Management para dar permiso a las funciones de Lambda para acceder a otras Servicios de AWS. Seleccione “Sí” para conceder permiso para implementar una pila AWS CloudFormation que cree o modifique los roles de IAM.
-
Desactivar la reversión: de forma predeterminada, si AWS SAM encuentra un error durante la creación o la implementación de la pila, la devuelve a la versión anterior. Seleccione “No” para aceptar este valor predeterminado.
-
Puede que HelloWorldFunction no tenga definida la autorización, ¿está bien?: Ingrese
y
. -
Guardar los argumentos en samconfig.toml: seleccione “Sí” para guardar las opciones de configuración. En el futuro, podrá volver a ejecutar
sam deploy
sin parámetros para implementar cambios en la aplicación.
-
-
Una vez finalizada la implementación de la aplicación, la CLI devuelve el nombre de recurso de Amazon (ARN) de la función de Lambda de Hello World y el rol de IAM creado para la misma. También muestra el punto de conexión de la API de API Gateway. Para probar la aplicación, abra el punto de conexión en un navegador. Verá una respuesta parecida a la siguiente.
{"message":"hello world","location":"34.244.135.203"}
-
Use el siguiente comando para eliminar los recursos. Tenga en cuenta que el punto de conexión de la API que ha creado es un punto de conexión público al que se puede acceder a través de Internet. Se recomienda eliminar este punto de conexión después de las pruebas.
sam delete
Siguientes pasos
Para obtener más información sobre AWS SAM para crear e implementar funciones de Lambda mediante .NET, consulte los siguientes recursos: