

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

# Implemente uma função Lambda usando o AWS SAM CodeBuild Lambda Java
<a name="sample-lambda-sam-gradle"></a>

O AWS Serverless Application Model (AWS SAM) é uma estrutura de código aberto para criar aplicativos sem servidor. Para obter mais informações, consulte o [AWS Serverless Application Model repositório](https://github.com/aws/serverless-application-model) em. GitHub O exemplo de Java a seguir usa o Gradle para criar e testar uma AWS Lambda função. Depois disso, a AWS SAM CLI é usada para implantar o CloudFormation modelo e o pacote de implantação. Ao usar o CodeBuild Lambda, as etapas de construção, teste e implantação são todas gerenciadas automaticamente, permitindo que a infraestrutura seja atualizada rapidamente sem intervenção manual em uma única compilação.

## Configurar seu AWS SAM repositório
<a name="sample-lambda-sam-gradle.set-up-repo"></a>

Crie um AWS SAM `Hello World` projeto usando a AWS SAM CLI.

**Para criar seu AWS SAM projeto**

1. Siga as instruções no *Guia do AWS Serverless Application Model desenvolvedor* para [instalar a AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html) em sua máquina local.

1. Execute `sam init` e selecione a configuração de projeto a seguir.

   ```
   Which template source would you like to use?: 1 - AWS Quick Start Templates
   Choose an AWS Quick Start application template: 1 - Hello World Example
   Use the most popular runtime and package type? (Python and zip) [y/N]: N
   Which runtime would you like to use?: 8 - java21
   What package type would you like to use?: 1 - Zip
   Which dependency manager would you like to use?: 1 - gradle
   Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: N
   Would you like to enable monitoring using CloudWatch Application Insights? [y/N]: N
   Would you like to set Structured Logging in JSON format on your Lambda functions? [y/N]:  N
   Project name [sam-app]: <insert project name>
   ```

1. Carregue a pasta AWS SAM do projeto em um repositório de origem compatível. Para obter uma lista dos tipos de fonte compatíveis, consulte [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).

## Crie um projeto CodeBuild Lambda Java
<a name="sample-lambda-sam-gradle.create-project"></a>

Crie um projeto AWS CodeBuild Lambda Java e configure as permissões do IAM necessárias para a construção.

**Para criar seu projeto CodeBuild Lambda Java**

1. Abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Se uma página de CodeBuild informações for exibida, escolha **Criar projeto de construção**. Caso contrário, no painel de navegação, expanda **Compilar**, escolha **Projetos de compilação** e, depois, **Criar projeto de compilação**. 

1. Em **Nome do projeto**, insira um nome para esse projeto de compilação. Os nomes dos projetos de criação devem ser exclusivos em cada AWS conta. Também é possível incluir uma descrição opcional do projeto de compilação para ajudar outros usuários a entender para que esse projeto é usado.

1. Em **Código-fonte**, selecione o repositório de origem em que seu AWS SAM projeto está localizado.

1. Em **Ambiente**:
   + Para **Computação**, selecione **Lambda**.
   + Em **Runtime(s)**, selecione **Java**.
   + Para **Imagem**, selecione **aws/codebuild/amazonlinux-x86\$164-lambda-standard:corretto21**.
   + Em **Perfil de serviço**, deixe a opção **Novo perfil de serviço** selecionada. Anote o **nome da função**. Isso será necessário quando você atualizar as permissões do IAM do projeto posteriormente neste exemplo.

1. Selecione **Create build project (Criar projeto de compilação)**.

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 

1. No painel de navegação, escolha **Funções** e selecione o perfil de serviço associado ao projeto. Você pode encontrar sua função de projeto em CodeBuild selecionando seu projeto de compilação, escolhendo **Editar**, **Ambiente** e, em seguida, **Função de serviço**.

1. Escolha a guia **Relacionamentos de confiança** e, em seguida, escolha **Editar política de confiança**.

1. Adicione a seguinte política em linha ao perfil do IAM. Isso será usado para implantar sua AWS SAM infraestrutura posteriormente. Para obter mais informações, consulte [Adicionar e remover permissões de identidade do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) no *Guia do usuário do IAM*.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Action": [
                   "cloudformation:*",
                   "lambda:*",
                   "iam:*",
                   "apigateway:*",
                   "s3:*"
               ],
               "Resource": "arn:aws:iam::*:role/Service*"
           }
       ]
   }
   ```

------

## Configurar o buildspec do projeto
<a name="sample-lambda-sam-gradle.set-up-buildspec"></a>

Para criar, testar e implantar sua função Lambda, CodeBuild lê e executa comandos de compilação a partir de um buildspec.

**Para configurar o buildspec do projeto**

1. No CodeBuild console, selecione seu projeto de compilação e escolha **Editar** e **Buildspec**.

1. Em **Buildspec**, escolha **Inserir comandos de compilação** e, em seguida, escolha **Alternar para editor**.

1. Exclua os comandos de compilação pré-preenchidos e cole o seguinte buildspec.

   ```
   version: 0.2
   env:
     variables:
       GRADLE_DIR: "HelloWorldFunction"
   phases:
     build:
       commands:
         - echo "Running unit tests..."
         - cd $GRADLE_DIR; gradle test; cd ..
         - echo "Running build..."
         - sam build --template-file template.yaml
         - echo "Running deploy..."
         - sam package --output-template-file packaged.yaml --resolve-s3 --template-file template.yaml
         - yes | sam deploy
   ```

1. Selecione **Atualizar buildspec**.

## Implemente sua infraestrutura AWS SAM Lambda
<a name="sample-lambda-sam-gradle.deploy"></a>

Use o CodeBuild Lambda para implantar automaticamente sua infraestrutura Lambda

**Para implantar a infraestrutura do Lambda**

1. Selecione **Iniciar compilação**. Isso criará, testará e implantará automaticamente seu AWS SAM aplicativo para AWS Lambda uso CloudFormation.

1. Quando a compilação estiver concluída, navegue até o AWS Lambda console e pesquise sua nova função Lambda sob o nome do AWS SAM projeto.

1. Teste a função do Lambda selecionando **API Gateway** na visão geral da **Função** e clicando no URL do **endpoint de API**. Você deve ver uma página aberta com a mensagem `"message": "hello world"`.

## Limpar a infraestrutura
<a name="sample-lambda-sam-gradle.clean-up"></a>

Para evitar cobranças adicionais pelos recursos que você usou durante este tutorial, exclua os recursos criados pelo seu AWS SAM modelo CodeBuild e.

**Para limpar a infraestrutura**

1. Navegue até o CloudFormation console e selecione `aws-sam-cli-managed-default` o.

1. Em **Recursos**, esvazie o bucket de implantação `SamCliSourceBucket`.

1. Exclua a pilha `aws-sam-cli-managed-default`.

1. Exclua a CloudFormation pilha associada ao seu AWS SAM projeto. Essa pilha deve ter o mesmo nome do seu AWS SAM projeto.

1. Navegue até o CloudWatch console e exclua os grupos de CloudWatch registros associados ao seu CodeBuild projeto.

1. Navegue até o CodeBuild console e exclua seu CodeBuild projeto escolhendo **Excluir projeto de compilação**.