Tutorial: Cree y pruebe una aplicación sin servidor con AWS Lambda - AWS Kit de herramientas con Amazon Q

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial: Cree y pruebe una aplicación sin servidor con AWS Lambda

Puede crear una aplicación Lambda sin servidor mediante AWS Toolkit for Visual Studio una plantilla. Las plantillas del proyecto Lambda incluyen una para una aplicación AWS sin servidor, que es la AWS Toolkit for Visual Studio implementación del modelo de aplicaciones AWS sin servidor (SAM).AWS Con este tipo de proyecto, puede desarrollar un conjunto de AWS Lambda funciones e implementarlas con los AWS recursos necesarios como una aplicación completa, que se utiliza AWS CloudFormation para organizar la implementación.

Para obtener información sobre los requisitos previos y la configuración de AWS Toolkit for Visual Studio, consulte Uso de plantillas AWS Lambda en AWS el Toolkit for Visual Studio.

Cree un nuevo proyecto de aplicación sin servidor AWS

AWS Los proyectos de aplicaciones sin servidor crean funciones Lambda con una CloudFormation plantilla sin servidor. CloudFormation Las plantillas le permiten definir recursos adicionales, como bases de datos, añadir funciones de IAM e implementar varias funciones a la vez. Esto difiere de los proyectos AWS Lambda, que se centran en desarrollar e implementar una sola función Lambda.

En el siguiente procedimiento se describe cómo crear un nuevo proyecto de aplicación sin servidor de AWS .

  1. Desde Visual Studio, expanda el menú Archivo, expanda Nuevo y, a continuación, elija Proyecto.

  2. En el cuadro de diálogo Nuevo proyecto, asegúrese de que los cuadros desplegables Idioma, Plataforma y Tipo de proyecto están definidos en "Todo…" e introduzca aws lambda en el campo Buscar.

  3. Seleccione la plantilla Aplicación sin servidor de AWS con pruebas (.NET Core - C#).

    nota

    Es posible que la plantilla Aplicación sin servidor de AWS con pruebas (.NET Core - C#) no aparezca en la parte superior de los resultados.

  4. Haga clic en Siguiente para abrir el cuadro de diálogo Configurar su nuevo proyecto.

  5. En el cuadro de diálogo Configurar su nuevo proyecto, introduzca ServerlessPowertools para el Nombre y, a continuación, complete los campos restantes según sus preferencias. Pulse el botón Crear para pasar al cuadro de diálogo de Selección de esquemas.

  6. En la página Seleccionar esquema, elija el esquema Powertools para AWS Lambda y, a continuación, elija Finalizar para crear el proyecto de Visual Studio.

Revisión de los archivos de la aplicación sin servidor

En las siguientes secciones se ofrece una visión detallada de los tres archivos de aplicaciones sin servidor creados para el proyecto:

  1. serverless.template

  2. Functions.cs

  3. aws-lambda-tools-defaults.json

1. serverless.template

Un serverless.template archivo es una AWS CloudFormation plantilla para declarar las funciones de Serverless y otros AWS recursos. El archivo incluido en este proyecto contiene una declaración para una sola función de Lambda que se expondrá a través de Amazon API Gateway como una operación HTTP *Get*. Puede editar esta plantilla para personalizar la función existente o añadir más funciones y otros recursos que necesite su aplicación.

A continuación se muestra un ejemplo de un archivo serverless.template:

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Description": "An AWS Serverless Application.", "Resources": { "Get": { "Type": "AWS::Serverless::Function", "Properties": { "Architectures": [ "x86_64" ], "Handler": "ServerlessPowertools::ServerlessPowertools.Functions::Get", "Runtime": "dotnet8", "CodeUri": "", "MemorySize": 512, "Timeout": 30, "Role": null, "Policies": [ "AWSLambdaBasicExecutionRole" ], "Environment": { "Variables": { "POWERTOOLS_SERVICE_NAME": "ServerlessGreeting", "POWERTOOLS_LOG_LEVEL": "Info", "POWERTOOLS_LOGGER_CASE": "PascalCase", "POWERTOOLS_TRACER_CAPTURE_RESPONSE": true, "POWERTOOLS_TRACER_CAPTURE_ERROR": true, "POWERTOOLS_METRICS_NAMESPACE": "ServerlessGreeting" } }, "Events": { "RootGet": { "Type": "Api", "Properties": { "Path": "/", "Method": "GET" } } } } } }, "Outputs": { "ApiURL": { "Description": "API endpoint URL for Prod environment", "Value": { "Fn::Sub": "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/" } } } }

Tenga en cuenta que muchos de los campos de declaración ...AWS:: Serverless::Function... son similares a los campos de la implementación de un proyecto de Lambda. El registro, las métricas y el rastreo de Powertools se configuran mediante las siguientes variables de entorno:

  • POWERTOOLS_SERVICE_NAME= ServerlessGreeting

  • POWERTOOLS_LOG_LEVEL=Info

  • POWERTOOLS_LOGGER_CASE= PascalCase

  • POWERTOOLS_TRACER_CAPTURE_RESPONSE=true

  • POWERTOOLS_TRACER_CAPTURE_ERROR=true

  • POWERTOOLS_METRICS_NAMESPACE= ServerlessGreeting

Para obtener definiciones y detalles adicionales sobre las variables de entorno, consulte el sitio web Powertools para obtener referencias. AWS Lambda

2. Functions.cs

Functions.cs es un archivo de clase que contiene un método de C# asignado a una sola función declarada en el archivo de plantilla. La función de Lambda responde a los métodos HTTP Get de la API Gateway. A continuación se muestra un ejemplo del archivo Functions.cs:

public class Functions { [Logging(LogEvent = true, CorrelationIdPath = CorrelationIdPaths.ApiGatewayRest)] [Metrics(CaptureColdStart = true)] [Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)] public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context) { Logger.LogInformation("Get Request"); var greeting = GetGreeting(); var response = new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = greeting, Headers = new Dictionary (string, string) { { "Content-Type", "text/plain" } } }; return response; } [Tracing(SegmentName = "GetGreeting Method")] private static string GetGreeting() { Metrics.AddMetric("GetGreeting_Invocations", 1, MetricUnit.Count); return "Hello Powertools for AWS Lambda (.NET)"; } }

3. aws-lambda-tools-defaults.json

aws-lambda-tools-defaults.jsonproporciona los valores predeterminados para el asistente de AWS implementación en Visual Studio y los AWS Lambda comandos agregados a la CLI de.NET Core. A continuación se muestra un ejemplo del archivo aws-lambda-tools-defaults.json que se incluye en este proyecto:

{ "profile": "Default", "region": "us-east-1", "configuration": "Release", "s3-prefix": "ServerlessPowertools/", "template": "serverless.template", "template-parameters": "" }

Implementación de la aplicación sin servidor

Para implementar la aplicación sin servidor complete los siguientes pasos.

  1. En el Explorador de soluciones, abra el menú contextual del proyecto (haga clic con el botón derecho) y seleccione Publicar en AWS Lambda para abrir el cuadro de diálogo Publicar aplicación AWS sin servidor.

  2. En el cuadro de diálogo Publicar una aplicación AWS sin servidor, introduzca un nombre para el contenedor de la CloudFormation pila en el campo Nombre de la pila.

  3. En el campo Bucket de S3, elija un bucket de Amazon S3 en el que se cargará el paquete de aplicaciones o elija el botón Nuevo... e introduzca el nombre de un nuevo bucket de Amazon S3. A continuación, seleccione Publicar para publicar e implementar la aplicación.

    nota

    La CloudFormation pila y el bucket de Amazon S3 deben estar en la misma AWS región. El resto de los ajustes del proyecto se definen en el archivo serverless.template.

    Imagen del cuadro de diálogo Publicar una aplicación AWS sin servidor.
  4. La ventana de vista de Pila se abre durante el proceso de publicación. Cuando se completa la implementación, el campo Estado muestra: CREATE_COMPLETE.

    Imagen de la ventana de visualización de la pila de implementación en Visual Studio.

Prueba de la aplicación sin servidor

Cuando se complete la creación de la pila, podrá ver la aplicación mediante la URL sin servidor de AWS . Si ha completado este tutorial sin agregar funciones o parámetros adicionales, al acceder a su URL AWS sin servidor, se muestra la siguiente frase en su navegador web:. Hello Powertools for AWS Lambda (.NET)