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 novo projeto de aplicativo AWS sem servidor

AWS Projetos de aplicativos sem servidor criam funções Lambda com um modelo sem servidor. CloudFormation 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 projeto de aplicação sem servidor da AWS .

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

  2. Na caixa de diálogo Novo projeto, verifique se as caixas suspensas Idioma, Plataforma e Tipo de projeto estão definidas como “Todos…” 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 Aplicação de tecnologia sem servidor da AWS com testes (.NET Core - C#) não seja preenchido no topo dos resultados.

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

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

  6. Na página Selecionar esquema, escolha o esquema Powertools para AWS Lambda e selecione Concluir para criar o projeto do Visual Studio.

Revisar os arquivos da aplicação de tecnologia sem servidor

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

  1. serverless.template

  2. Functions.cs

  3. aws-lambda-tools-defaults.json

1. serverless.template

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 do Lambda que será exposta por meio do Amazon API Gateway como uma operação HTTP *Get*. É possível editar esse modelo para personalizar a função existente ou adicionar mais funções e outros recursos exigidos pela sua aplicação.

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 declaração ...AWS:: Serverless::Function... são semelhantes aos campos de uma implantação de projeto do Lambda. O registro em log, 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=Info

  • POWERTOOLS_LOGGER_CASE= PascalCase

  • POWERTOOLS_TRACER_CAPTURE_RESPONSE=true

  • POWERTOOLS_TRACER_CAPTURE_ERROR=true

  • 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 que contém um método C# mapeado para uma única função declarada no arquivo de modelo. A função do Lambda responde aos métodos HTTP Get da API Gateway. Veja a seguir um exemplo do arquivo 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.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 arquivo aws-lambda-tools-defaults.json incluído no projeto:

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

Implantar o aplicativo sem servidor

Para implantar a aplicação sem servidor, execute as seguintes etapas:

  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 CloudFormation pilha no campo Nome da pilha.

  3. No campo Bucket do S3, escolha um bucket do Amazon S3 para o qual o pacote da aplicação será carregado ou clique no botão Novo... e insira o nome de um novo bucket do Amazon S3. Depois, selecione Publicar para implantar a aplicação.

    nota

    Sua 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 arquivo serverless.template.

    Imagem da caixa de diálogo Publish AWS Serverless Application.
  4. A janela de visualização Pilha é 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 a aplicação usando o URL sem servidor da AWS . 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)