Tutorial: Crie e teste um aplicativo sem servidor com AWS Lambda - AWS Kit de ferramentas com Amazon Q

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial: Crie e teste um aplicativo sem servidor com AWS Lambda

Você pode criar um aplicativo Lambda sem servidor usando um modelo. AWS Toolkit for Visual Studio Os modelos de projeto Lambda incluem um para um aplicativo AWS sem servidor, que é a AWS Toolkit for Visual Studio implementação do modelo de aplicativo AWS sem servidor (SAM).AWS Usando esse tipo de projeto, você pode desenvolver uma coleção de AWS Lambda funções e implantá-las com todos os AWS recursos necessários como um aplicativo inteiro, usando AWS CloudFormation para orquestrar a implantação.

Para obter pré-requisitos e informações sobre como configurar o AWS Toolkit for Visual Studio, consulte Usando os modelos AWS Lambda no Toolkit for Visual Studio AWS.

Criar um projeto de aplicação sem servidor da AWS

AWS Projetos de aplicativos sem servidor criam funções Lambda com um modelo sem servidor. AWS CloudFormation AWS CloudFormation os modelos permitem que você defina recursos adicionais, como bancos de dados, adicione funções do IAM e implante várias funções ao mesmo tempo. Isso difere dos projetos AWS Lambda, que se concentram no desenvolvimento e na implantação de uma única função Lambda.

O procedimento a seguir descreve como criar um novo projeto de aplicativo AWS sem servidor.

  1. No Visual Studio, expanda o menu Arquivo, expanda Novo e escolha Projeto.

  2. Na caixa de diálogo Novo projeto, verifique se as caixas suspensas Idioma, Plataforma e Tipo de projeto estão definidas como “Tudo...” e insira aws lambda no campo Pesquisar.

  3. Selecione o modelo AWS Serverless Application with Tests (.NET Core - C#).

    nota

    É possível que o modelo Aplicativo AWS sem servidor com testes (.NET Core - C#) não seja preenchido na parte superior dos resultados.

  4. Clique em Avançar para abrir a caixa de diálogo Configurar seu novo projeto.

  5. Na caixa de diálogo Configurar seu novo projeto, insira ServerlessPowertools o Nome e preencha os campos restantes de acordo com sua preferência. Escolha o botão Criar para prosseguir até a caixa de diálogo Selecionar blueprint.

  6. Na caixa de diálogo Selecionar esquema, escolha o Powertools para o AWS Lambda blueprint e, em seguida, escolha Concluir para criar o projeto do Visual Studio.

Revisando os arquivos do aplicativo sem servidor

As seções a seguir fornecem uma visão detalhada de três arquivos de aplicativos sem servidor criados para seu projeto:

  1. serverless.template

  2. Functions.cs

  3. aws-lambda-tools-defaults.json

1. modelo sem servidor

Um serverless.template arquivo é um AWS CloudFormation modelo para declarar suas funções sem servidor e outros recursos. AWS O arquivo incluído neste projeto contém uma declaração para uma única função Lambda que será exposta por meio do Amazon API Gateway como uma HTTP *Get* operação. Você pode editar esse modelo para personalizar a função existente ou adicionar mais funções e outros recursos exigidos pelo seu aplicativo.

Este é um exemplo de um arquivo 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/" } } } }

Observe que muitos dos campos de ...AWS:: Serverless::Function... declaração são semelhantes aos campos de uma implantação do projeto Lambda. O registro, as métricas e o rastreamento do Powertools são configurados por meio das seguintes variáveis de ambiente:

  • POWERTOOLS_SERVICE_NAME= ServerlessGreeting

  • PowerTools_log_level=Informações

  • POWERTOOLS_LOGGER_CASE= PascalCase

  • PowerTools_tracer_capture_response=Verdadeiro

  • PowerTools_tracer_capture_error=Verdadeiro

  • POWERTOOLS_METRICS_NAMESPACE= ServerlessGreeting

Para obter definições e detalhes adicionais sobre as variáveis de ambiente, consulte o site Powertools for AWS Lambda references.

2. Functions.cs

Functions.csé um arquivo de classe contendo um método C# mapeado para uma única função declarada no arquivo de modelo. A função Lambda responde aos HTTP Get métodos do API Gateway. Veja a seguir um exemplo do Functions.cs arquivo:

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.jsonfornece os valores padrão para o assistente de AWS implantação dentro do Visual Studio e os AWS Lambda comandos adicionados à CLI do.NET Core. Veja a seguir um exemplo do aws-lambda-tools-defaults.json arquivo incluído neste projeto:

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

Implantar o aplicativo sem servidor

Para implantar seu aplicativo sem servidor, conclua as etapas a seguir:

  1. No Solution Explorer, abra o menu de contexto do seu projeto (clique com o botão direito do mouse) e escolha Publish to AWS Lambda para abrir a caixa de diálogo Publish AWS Serverless Application.

  2. Na caixa de diálogo Publicar aplicativo AWS sem servidor, insira um nome para o contêiner da AWS CloudFormation pilha no campo Nome da pilha.

  3. No campo S3 Bucket, escolha um bucket Amazon S3 para o qual seu pacote de aplicativos será carregado ou escolha o Novo... botão e insira o nome de um novo bucket do Amazon S3. Em seguida, escolha Publicar para publicar para implantar seu aplicativo.

    nota

    Sua AWS CloudFormation pilha e o Amazon S3 Bucket devem existir na mesma região AWS . As configurações restantes do seu projeto são definidas no serverless.template arquivo.

    Imagem da caixa de diálogo Publish AWS Serverless Application.
  4. A janela Stack View é aberta durante o processo de publicação, quando a implantação é concluída, o campo Status exibe:CREATE_COMPLETE.

    Imagem da janela de visualização da pilha de implantação no Visual Studio.

Testar o aplicativo sem servidores

Quando a criação da pilha estiver concluída, você poderá visualizar seu aplicativo usando o URL sem AWS servidor. Se você concluiu este tutorial sem adicionar nenhuma função ou parâmetro adicional, acessar seu URL AWS sem servidor exibe a seguinte frase em seu navegador da web:. Hello Powertools for AWS Lambda (.NET)