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: creación y prueba de una aplicación sin servidor con AWS Lambda
Puede crear una aplicación de Lambda sin servidor utilizando una plantilla de AWS Toolkit for Visual Studio. Las plantillas de proyecto de Lambda incluyen una para Aplicación sin servidor de AWS, que es la implementación del AWS Toolkit for Visual Studio AWS Serverless Application Model (AWS SAM)
Para conocer los requisitos previos y obtener información acerca de la configuración de AWS Toolkit for Visual Studio, consulte Uso de las plantillas de AWS Lambda en el Kit de herramientas de AWS para Visual Studio.
Temas
Creación de un nuevo proyecto de aplicación sin servidor de AWS
Los proyectos de aplicaciones sin servidor de AWS crean funciones de Lambda con una plantilla sin servidor CloudFormation. Las plantillas CloudFormation le permiten definir recursos adicionales, como bases de datos, añadir roles 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 de Lambda.
En el siguiente procedimiento se describe cómo crear un nuevo proyecto de aplicación sin servidor de AWS.
-
Desde Visual Studio, expanda el menú Archivo, expanda Nuevo y, a continuación, elija Proyecto.
-
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 lambdaen el campo Buscar. -
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.
-
Haga clic en Siguiente para abrir el cuadro de diálogo Configurar su nuevo proyecto.
-
En el cuadro de diálogo Configurar su nuevo proyecto, introduzca
ServerlessPowertoolspara 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. -
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:
-
serverless.template
-
Functions.cs
-
aws-lambda-tools-defaults.json
1. serverless.template
Un archivo serverless.template es una plantilla AWS CloudFormation para declarar las funciones sin servidor y otros recursos de AWS. 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 de 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.json proporciona los valores predeterminados para el asistente de implementación de AWS en Visual Studio y los comandos AWS Lambda 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.
-
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 sin servidor de AWS.
-
En el cuadro de diálogo Publicar una aplicación sin servidor de AWS, introduzca un nombre para el contenedor de la pila CloudFormation en el campo Nombre de la pila.
-
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 pila CloudFormation y el bucket de Amazon S3 deben estar en la misma región de AWS. El resto de los ajustes del proyecto se definen en el archivo
serverless.template.
-
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.
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 sin servidor de AWS, se muestra la siguiente frase en su navegador web: Hello Powertools for AWS Lambda (.NET).