

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
<a name="lambda-build-test-severless-app"></a>

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](https://github.com/awslabs/serverless-application-model) (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](lambda-index.md).

**Topics**
+ [Criar um novo projeto de aplicativo AWS sem servidor](#create-a-new-aws-serverless-application-project)
+ [Revisar os arquivos da aplicação de tecnologia sem servidor](#examine-the-files-in-the-serverless-application)
+ [Implantar o aplicativo sem servidor](#deploy-the-serverless-application)
+ [Testar o aplicativo sem servidores](#test-the-serverless-application)

## Criar um novo projeto de aplicativo AWS sem servidor
<a name="create-a-new-aws-serverless-application-project"></a>

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**.

1. 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**.

1. Selecione o modelo **AWS Serverless Application with Tests (.NET Core - C\$1)**.
**nota**  
É possível que o modelo **Aplicação de tecnologia sem servidor da AWS com testes (.NET Core - C\$1)** não seja preenchido no topo dos resultados.

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

1. 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**.

1. 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
<a name="examine-the-files-in-the-serverless-application"></a>

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

1. Functions.cs

1. aws-lambda-tools-defaults.json

### 1. serverless.template
<a name="blogcs"></a>

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\$1SERVICE\$1NAME= ServerlessGreeting
+ POWERTOOLS\$1LOG\$1LEVEL=Info
+ POWERTOOLS\$1LOGGER\$1CASE= PascalCase
+ POWERTOOLS\$1TRACER\$1CAPTURE\$1RESPONSE=true
+ POWERTOOLS\$1TRACER\$1CAPTURE\$1ERROR=true
+ POWERTOOLS\$1METRICS\$1NAMESPACE= ServerlessGreeting

Para obter definições e detalhes adicionais sobre as variáveis de ambiente, consulte o site [Powertools for AWS Lambda references](https://awslabs.github.io/aws-lambda-powertools-dotnet/references/).

### 2. Functions.cs
<a name="functionscs"></a>

`Functions.cs` é um arquivo de classe que contém um método C\$1 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
<a name="functionscs"></a>

`aws-lambda-tools-defaults.json`fornece 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
<a name="deploy-the-serverless-application"></a>

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.

1. 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**.

1. 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.\]](http://docs.aws.amazon.com/pt_br/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-serverless-03192024.png)

1. 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.\]](http://docs.aws.amazon.com/pt_br/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-stackview-03192024.png)

## Testar o aplicativo sem servidores
<a name="test-the-serverless-application"></a>

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)`