

# Tutorial: Uso do Lambda com API Gateway
<a name="services-apigateway-tutorial"></a>

Neste tutorial, você criará uma API REST que será usada para invocar uma função do Lambda usando uma solicitação HTTP. A função do Lambda executará operações de criação, leitura, atualização e exclusão (CRUD) em uma tabela do DynamoDB. Essa função será fornecida aqui para fins de demonstração, mas você aprenderá a configurar uma API REST do API Gateway que pode invocar qualquer função do Lambda.

![\[\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/APIG_tut_resources.png)


O uso do API Gateway fornece aos usuários um endpoint HTTP seguro para invocar a função do Lambda e pode ajudar a gerenciar grandes volumes de chamadas para a função, ao realizar o controle de utilização do tráfego e validar e autorizar as chamadas de API automaticamente. O API Gateway também oferece controles de segurança flexíveis usando o AWS Identity and Access Management (IAM) e o Amazon Cognito. Isso é útil para casos de uso em que é necessária uma autorização prévia para as chamadas em sua aplicação.

**dica**  
O Lambda fornece duas maneiras de invocar uma função por meio de um endpoint HTTP: API Gateway e URLs de funções do Lambda. Se não tiver certeza de qual é o melhor método para seu caso de uso, consulte [Seleção de um método para invocar a função do Lambda usando uma solicitação HTTP](apig-http-invoke-decision.md).

Para concluir este tutorial, você passará pelos estágios a seguir:

1. Criação e configuração de uma função do Lambda em Python ou em Node.js para a execução de operações em uma tabela do DynamoDB.

1. Criação de uma API REST no API Gateway para conexão com a função do Lambda.

1. Criação de uma tabela do DynamoDB e realização de teste com a função do Lambda no console.

1. Implantação da API e realização de teste da configuração completa usando curl em um terminal.

Ao concluir esses estágios, você aprenderá a usar o API Gateway para criar um endpoint HTTP que pode invocar uma função do Lambda com segurança em qualquer escala. Você também aprenderá como implantar a API e testá-la no console, além de como enviar uma solicitação HTTP usando um terminal.

## Criação de uma política de permissões
<a name="services-apigateway-tutorial-policy"></a>

Antes de ser possível criar uma [função de execução](lambda-intro-execution-role.md) para a função do Lambda, primeiro é necessário criar uma política de permissões para fornecer à sua função permissão para acessar os recursos da AWS necessários. Para este tutorial, a política permitirá que o Lambda execute operações de CRUD em uma tabela do DynamoDB e grave no Amazon CloudWatch Logs.

**Para criar a política**

1. Abra a [página Policies](https://console.aws.amazon.com/iam/home#/policies) (Políticas) do console do IAM.

1. Escolha **Create Policy**.

1. Escolha a guia **JSON** e cole a política personalizada a seguir no editor JSON.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "Stmt1428341300017",
         "Action": [
           "dynamodb:DeleteItem",
           "dynamodb:GetItem",
           "dynamodb:PutItem",
           "dynamodb:Query",
           "dynamodb:Scan",
           "dynamodb:UpdateItem"
         ],
         "Effect": "Allow",
         "Resource": "*"
       },
       {
         "Sid": "",
         "Resource": "*",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents"
         ],
         "Effect": "Allow"
       }
     ]
   }
   ```

------

1. Escolha **Próximo: tags**.

1. Selecione **Próximo: revisar**.

1. No campo **Política de revisão**, em **Nome** da política, insira **lambda-apigateway-policy**.

1. Escolha **Criar política**.

## Criar uma função de execução
<a name="services-apigateway-tutorial-role"></a>

Um [perfil de execução](lambda-intro-execution-role.md) é um perfil do AWS Identity and Access Management (IAM) que concede a uma função do Lambda permissão para acessar recursos e Serviços da AWS. Para permitir que a função execute operações em uma tabela do DynamoDB, vincule a política de permissões criada na etapa anterior.

**Para criar um perfil de execução e vincular a política de permissões personalizada**

1. Abra a página [Funções](https://console.aws.amazon.com/iam/home#/roles) no console do IAM.

1. Selecione **Criar perfil**.

1. Para o tipo de entidade confiável, escolha **Serviço da AWS** e, em seguida, para o caso de uso, selecione **Lambda**.

1. Escolha **Próximo**.

1. Na caixa de pesquisa de política, insira **lambda-apigateway-policy**.

1. Nos resultados da pesquisa, selecione a política que você criou (`lambda-apigateway-policy`) e, depois, escolha **Next** (Avançar).

1. Em **Role details** (Detalhes do perfil), para **Role name** (Nome do perfil), insira **lambda-apigateway-role** e, em seguida, escolha **Create role** (Criar perfil).

## Criar a função do Lambda
<a name="services-apigateway-tutorial-function"></a>

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda e escolha **Criar função**.

1. Escolha **Criar do zero**.

1. Em **Function name** (Nome da função), insira `LambdaFunctionOverHttps`.

1. Em **Runtime**, escolha o runtime Node.js ou Python mais recente.

1. Em **Permissions** (Permissões), expanda **Change default execution role** (Alterar função de execução padrão).

1. Escolha **Usar um perfil existente** e selecione o perfil **lambda-apigateway-role** que você criou anteriormente.

1. Escolha a opção **Criar função**.

1. No painel **Código-fonte**, substitua o código padrão pelo código Node.js ou Python a seguir.

------
#### [ Node.js ]

   A configuração `region` deve corresponder à Região da AWS na qual que você implanta a função e [cria a tabela do DynamoDB](#services-apigateway-tutorial-table).

**Example index.mjs**  

   ```
   import { DynamoDBDocumentClient, PutCommand, GetCommand, 
            UpdateCommand, DeleteCommand} from "@aws-sdk/lib-dynamodb";
   import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
   
   const ddbClient = new DynamoDBClient({ region: "us-east-2" });
   const ddbDocClient = DynamoDBDocumentClient.from(ddbClient);
   
   // Define the name of the DDB table to perform the CRUD operations on
   const tablename = "lambda-apigateway";
   
   /**
    * Provide an event that contains the following keys:
    *
    *   - operation: one of 'create,' 'read,' 'update,' 'delete,' or 'echo'
    *   - payload: a JSON object containing the parameters for the table item
    *     to perform the operation on
    */
   export const handler = async (event, context) => {
      
        const operation = event.operation;
      
        if (operation == 'echo'){
             return(event.payload);
        }
        
       else { 
           event.payload.TableName = tablename;
           let response;
           
           switch (operation) {
             case 'create':
                  response = await ddbDocClient.send(new PutCommand(event.payload));
                  break;
             case 'read':
                  response = await ddbDocClient.send(new GetCommand(event.payload));
                  break;
             case 'update':
                  response = ddbDocClient.send(new UpdateCommand(event.payload));
                  break;
             case 'delete':
                  response = ddbDocClient.send(new DeleteCommand(event.payload));
                  break;
             default:
               response = 'Unknown operation: ${operation}';
             }
           console.log(response);
           return response;
       }
   };
   ```

------
#### [ Python ]

**Example lambda\$1function.py**  

   ```
   import boto3
   
   # Define the DynamoDB table that Lambda will connect to
   table_name = "lambda-apigateway"
   
   # Create the DynamoDB resource
   dynamo = boto3.resource('dynamodb').Table(table_name)
   
   # Define some functions to perform the CRUD operations
   def create(payload):
       return dynamo.put_item(Item=payload['Item'])
   
   def read(payload):
       return dynamo.get_item(Key=payload['Key'])
   
   def update(payload):
       return dynamo.update_item(**{k: payload[k] for k in ['Key', 'UpdateExpression', 
       'ExpressionAttributeNames', 'ExpressionAttributeValues'] if k in payload})
   
   def delete(payload):
       return dynamo.delete_item(Key=payload['Key'])
   
   def echo(payload):
       return payload
   
   operations = {
       'create': create,
       'read': read,
       'update': update,
       'delete': delete,
       'echo': echo,
   }
   
   def lambda_handler(event, context):
       '''Provide an event that contains the following keys:
         - operation: one of the operations in the operations dict below
         - payload: a JSON object containing parameters to pass to the 
           operation being performed
       '''
       
       operation = event['operation']
       payload = event['payload']
       
       if operation in operations:
           return operations[operation](payload)
           
       else:
           raise ValueError(f'Unrecognized operation "{operation}"')
   ```

------
**nota**  
Neste exemplo, o nome da tabela do DynamoDB está definido como uma variável em seu código da função. Em uma aplicação real, a prática recomendada é transferir esse parâmetro como uma variável de ambiente e evitar codificar o nome da tabela. Para obter mais informações, consulte [Usar variáveis de ambiente do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html).

1. Na seção **DEPLOY**, escolha **Implantar** para atualizar o código da função:  
![\[\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/getting-started-tutorial/deploy-console.png)

## Testar a função
<a name="services-apigateway-tutorial-test-function"></a>

Antes de integrar a função com o API Gateway, confirme se a implantação da função ocorreu com êxito. Use o console do Lambda para enviar um evento de teste para a função.

1. Na página do console do Lambda da função, escolha a guia **Testar**.  
![\[\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/test-tab.png)

1. Role para baixo até a seção **JSON do evento** e substitua o evento padrão pelo que se segue. Esse evento corresponde à estrutura esperada pela função do Lambda.

   ```
   {
       "operation": "echo",
       "payload": {
           "somekey1": "somevalue1",
           "somekey2": "somevalue2"
       }
   }
   ```

1. Escolha **Testar**.

1. Em **Execução da função: êxito**, expanda **Detalhes**. Você deverá ver a resposta a seguir:

   ```
   {
     "somekey1": "somevalue1",
     "somekey2": "somevalue2"
   }
   ```

## Criar uma API REST usando o API Gateway
<a name="services-apigateway-tutorial-api"></a>

Nesta etapa, você cria a API REST do API Gateway que usará para invocar a função do Lambda.

**Para criar a API**

1. Abra o [console do API Gateway](https://console.aws.amazon.com/apigateway).

1. Selecione **Create API** (Criar API).

1. Na caixa do **API REST**, escolha **Construir**.

1. Em **Detalhes da API**, deixe a opção **Nova API** selecionada e, em **Nome da API**, insira**DynamoDBOperations**.

1. Selecione **Criar API**.

## Criação de um recurso na API REST
<a name="services-apigateway-tutorial-resource"></a>

Para adicionar um método HTTP à API, primeiro é necessário criar um recurso no qual esse método possa operar. Aqui você cria o recurso para gerenciar a tabela do DynamoDB.

**Para criar o recurso**

1. No [Console do Gateway da API](https://console.aws.amazon.com/apigateway), na página **Recursos** da API, escolha **Criar recurso**.

1. Em **Detalhes do recurso**, em **Nome do recurso**, insira **DynamoDBManager**.

1. Escolha **Create Resource** (Criar recurso).

## Criação de um método HTTP POST
<a name="services-apigateway-tutorial-method"></a>

Nesta etapa, você cria um método (`POST`) para o recurso `DynamoDBManager`. Você vincula esse método `POST` à função do Lambda para que, quando o método receber uma solicitação HTTP, o API Gateway invoque sua função do Lambda.

**nota**  
 Para a finalidade deste tutorial, um método HTTP (`POST`) será usado para invocar uma única função do Lambda que executa todas as operações em sua tabela do DynamoDB. Em uma aplicação real, a prática recomendada é usar diferentes funções do Lambda e métodos HTTP para cada operação. Para obter mais informações, consulte [The Lambda monolith](https://serverlessland.com/content/service/lambda/guides/aws-lambda-operator-guide/monolith) no Serverless Land. 

**Para criar o método POST**

1. Na página **Recursos** da API, certifique-se de que o recurso `/DynamoDBManager` esteja realçado. Em seguida, no painel **Métodos**, escolha **Criar método**.

1. Em **Tipo de método**, escolha **POST**.

1. Em **Tipo de integração**, mantenha a opção **Função do Lambda** selecionada.

1. Em **Função do Lambda**, escolha o nome do recurso da Amazon (ARN) para sua função (`LambdaFunctionOverHttps`).

1. Escolha **Criar método**.

## Criar uma tabela do DynamoDB
<a name="services-apigateway-tutorial-table"></a>

Crie uma tabela do DynamoDB em branco na qual a função do Lambda executará as operações de CRUD.

**Para criar uma tabela do DynamoDB**

1. Abra a [página Tables (Tabelas) no console do DynamoDB](https://console.aws.amazon.com/dynamodbv2#tables).

1. Escolha **Criar tabela**.

1. Em **Detalhes da tabela**, faça o seguinte:

   1. Em **Table name** (Nome da tabela), insira **lambda-apigateway**.

   1. Para a **Chave de partição**, insira **id** e mantenha o tipo de dados definido como **String**.

1. Em **Table settings** (Configurações da tabela), mantenha **Default settings** (Configurações padrões).

1. Escolha **Criar tabela**.

## Teste da integração do API Gateway, do Lambda e do DynamoDB
<a name="services-apigateway-tutorial-test-setup"></a>

Agora está tudo pronto para que ocorra o teste da integração do método de API do API Gateway com a função do Lambda e a tabela do DynamoDB. Ao usar o console do API Gateway, você envia solicitações diretamente para o método `POST` usando a função de teste do console. Nesta etapa, primeiro você usa uma operação `create` para adicionar um novo item à tabela do DynamoDB e, em seguida, usa uma operação `update` para modificar o item.

**Teste 1: para criar um novo item na tabela do DynamoDB**

1. No [API Gateway console](https://console.aws.amazon.com/apigateway) (Console do API Gateway), escolha a sua API (`DynamoDBOperations`).

1. No recurso `DynamoDBManager`, escolha o método **POST**.

1. Selecione a guia **Testar**. Talvez seja necessário selecionar o botão de seta para a direita para mostrar a guia.

1. Em **Método de teste**, mantenha as opções **Strings de consulta** e **Cabeçalhos** vazias. Em **Corpo da solicitação**, cole o seguinte JSON:

   ```
   {
     "operation": "create",
     "payload": {
       "Item": {
         "id": "1234ABCD",
         "number": 5
       }
     }
   }
   ```

1. Escolha **Testar**.

   Os resultados que são exibidos quando o teste é concluído devem mostrar status `200`. Esse código de status indica que a operação `create` ocorreu com êxito.

    Para confirmar, verifique se a tabela do DynamoDB passou a conter o novo item.

1. Abra a [página Tables](https://console.aws.amazon.com/dynamodbv2#tables) (Tabelas) do console do DynamoDB e escolha a tabela `lambda-apigateway`.

1. Escolha **Explore table items** (Explorar itens da tabela). No painel **Itens retornados**, você verá um item com o **id** `1234ABCD` e o **número** `5`. Exemplo:  
![\[\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/items-returned.png)

**Teste 2: para atualizar o item na tabela do DynamoDB**

1. No [Console do API Gateway](https://console.aws.amazon.com/apigateway), retorne para a guia **Teste** do seu método POST.

1. Em **Método de teste**, mantenha as opções **Strings de consulta** e **Cabeçalhos** vazias. Em **Corpo da solicitação**, cole o seguinte JSON:

   ```
   {
       "operation": "update",
       "payload": {
           "Key": {
               "id": "1234ABCD"
           },
           "UpdateExpression": "SET #num = :newNum",
           "ExpressionAttributeNames": {
               "#num": "number"
           },
           "ExpressionAttributeValues": {
               ":newNum": 10
           }
       }
   }
   ```

1. Escolha **Testar**.

   Os resultados que são exibidos quando o teste é concluído devem mostrar status `200`. Esse código de status indica que a operação `update` ocorreu com êxito.

    Para confirmar, verifique se o item na tabela do DynamoDB foi modificado.

1. Abra a [página Tables](https://console.aws.amazon.com/dynamodbv2#tables) (Tabelas) do console do DynamoDB e escolha a tabela `lambda-apigateway`.

1. Escolha **Explore table items** (Explorar itens da tabela). No painel **Itens retornados**, você verá um item com o **id** `1234ABCD` e o **número** `10`.  
![\[\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/items-returned-2.png)

## Implantar a API
<a name="services-apigateway-tutorial-deploy-api"></a>

Para que um cliente chame a API, você deve criar uma implantação e um estágio associado. Um estágio representa um snapshot da API, incluindo seus métodos e integrações.

**Para implantar a API**

1. Abra a página **APIs** do [API Gateway console](https://console.aws.amazon.com/apigateway) (Console do API Gateway) e escolha a API `DynamoDBOperations`.

1. Na página **Recursos** da sua API, escolha **Implantar API**.

1. Em **Estágio**, escolha **\$1Novo estágio\$1** e, em seguida, em **Nome do estágio**, insira **test**.

1. Escolha **Implantar**.

1. No painel **Detalhes do estágio** copie o **URL de invocação**. Você usará isso na próxima etapa para invocar a função usando uma solicitação HTTP.

## Uso de curl para invocar a função usando solicitações HTTP
<a name="services-apigateway-tutorial-invoke-function"></a>

Agora é possível invocar a função do Lambda ao emitir uma solicitação HTTP para a API. Nesta etapa, você criará um novo item na tabela do DynamoDB e realizará as operações de leitura, atualização e exclusão nesses itens.

**Para criar um item na tabela do DynamoDB usando curl**

1. Abra um terminal ou prompt de comando em sua máquina local e execute o seguinte comando `curl` usando o URL de invocação que você copiou na etapa anterior. Este comando usa as seguintes opções:
   + `-H`: adiciona um cabeçalho à solicitação. Aqui, especifica o tipo de conteúdo como JSON.
   + `-d`: envia dados no corpo da solicitação. Essa opção usa um método HTTP POST por padrão.

------
#### [ Linux/macOS ]

   ```
   curl https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager \
   -H "Content-Type: application/json" \
   -d '{"operation": "create", "payload": {"Item": {"id": "5678EFGH", "number": 15}}}'
   ```

------
#### [ PowerShell ]

   ```
   curl.exe 'https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager' -H 'Content-Type: application/json' -d '{\"operation\": \"create\", \"payload\": {\"Item\": {\"id\": \"5678EFGH\", \"number\": 15}}}'
   ```

------

   Se a operação foi bem-sucedida, você deverá ver uma resposta retornada com um código 200 de status de HTTP.

1. Também é possível usar o console do DynamoDB para confirmar que o item novo está na sua tabela fazendo o seguinte:

   1. Abra a [página Tables](https://console.aws.amazon.com/dynamodbv2#tables) (Tabelas) do console do DynamoDB e escolha a tabela `lambda-apigateway`.

   1. Escolha **Explore table items** (Explorar itens da tabela). No painel **Itens retornados**, você verá um item com o **id** `5678EFGH` e o **número** `15`.

**Para ler o item na tabela do DynamoDB usando curl**
+ No seu terminal ou prompt de comando, execute o seguinte comando `curl` para ler o valor do item que você acabou de criar. Use seu próprio URL de invocação.

------
#### [ Linux/macOS ]

  ```
  curl https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager \
  -H "Content-Type: application/json" \
  -d '{"operation": "read", "payload": {"Key": {"id": "5678EFGH"}}}'
  ```

------
#### [ PowerShell ]

  ```
  curl.exe 'https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager' -H 'Content-Type: application/json' -d '{\"operation\": \"read\", \"payload\": {\"Key\": {\"id\": \"5678EFGH\"}}}'
  ```

------

  Você deve ver uma saída como uma das seguintes, dependendo de ter escolhido o código da função em Node.js ou em Python:

------
#### [ Node.js ]

  ```
  {"$metadata":{"httpStatusCode":200,"requestId":"7BP3G5Q0C0O1E50FBQI9NS099JVV4KQNSO5AEMVJF66Q9ASUAAJG",
  "attempts":1,"totalRetryDelay":0},"Item":{"id":"5678EFGH","number":15}}
  ```

------
#### [ Python ]

  ```
  {"Item":{"id":"5678EFGH","number":15},"ResponseMetadata":{"RequestId":"QNDJICE52E86B82VETR6RKBE5BVV4KQNSO5AEMVJF66Q9ASUAAJG",
  "HTTPStatusCode":200,"HTTPHeaders":{"server":"Server","date":"Wed, 31 Jul 2024 00:37:01 GMT","content-type":"application/x-amz-json-1.0",
  "content-length":"52","connection":"keep-alive","x-amzn-requestid":"QNDJICE52E86B82VETR6RKBE5BVV4KQNSO5AEMVJF66Q9ASUAAJG","x-amz-crc32":"2589610852"},
  "RetryAttempts":0}}
  ```

------

**Para atualizar o item na tabela do DynamoDB usando curl**

1. No seu terminal ou prompt de comando, execute o seguinte comando `curl` para atualizar o item que você acabou de criar ao alterar o valor `number`. Use seu próprio URL de invocação.

------
#### [ Linux/macOS ]

   ```
   curl https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager \
   -H "Content-Type: application/json" \
   -d '{"operation": "update", "payload": {"Key": {"id": "5678EFGH"}, "UpdateExpression": "SET #num = :new_value", "ExpressionAttributeNames": {"#num": "number"}, "ExpressionAttributeValues": {":new_value": 42}}}'
   ```

------
#### [ PowerShell ]

   ```
   curl.exe 'https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager' -H 'Content-Type: application/json' -d '{\"operation\": \"update\", \"payload\": {\"Key\": {\"id\": \"5678EFGH\"}, \"UpdateExpression\": \"SET #num = :new_value\", \"ExpressionAttributeNames\": {\"#num\": \"number\"}, \"ExpressionAttributeValues\": {\":new_value\": 42}}}'
   ```

------

1. Para confirmar que o valor de `number` para p item foi atualizado, execute outro comando de leitura:

------
#### [ Linux/macOS ]

   ```
   curl https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager \
   -H "Content-Type: application/json" \
   -d '{"operation": "read", "payload": {"Key": {"id": "5678EFGH"}}}'
   ```

------
#### [ PowerShell ]

   ```
   curl.exe 'https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager' -H 'Content-Type: application/json' -d '{\"operation\": \"read\", \"payload\": {\"Key\": {\"id\": \"5678EFGH\"}}}'
   ```

------

**Para excluir o item na tabela do DynamoDB usando curl**

1. No seu terminal ou prompt de comando, execute o seguinte comando `curl` para excluir o item que você acabou de criar. Use seu próprio URL de invocação.

------
#### [ Linux/macOS ]

   ```
   curl https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager \
   -H "Content-Type: application/json" \
   -d '{"operation": "delete", "payload": {"Key": {"id": "5678EFGH"}}}'
   ```

------
#### [ PowerShell ]

   ```
   curl.exe 'https://l8togsqxd8.execute-api.us-east-2.amazonaws.com/test/DynamoDBManager' -H 'Content-Type: application/json' -d '{\"operation\": \"delete\", \"payload\": {\"Key\": {\"id\": \"5678EFGH\"}}}'
   ```

------

1. Confirme se a operação de exclusão ocorreu com êxito. No painel **Itens retornados** da página **Explorar itens** do console do DynamoDB, verifique se o item com o **id** `5678EFGH` não está mais na tabela.

## Limpeza dos recursos (opcional)
<a name="cleanup"></a>

Agora você pode excluir os recursos criados para este tutorial, a menos que queira mantê-los. Excluindo os recursos da AWS que você não está mais usando, você evita cobranças desnecessárias em sua Conta da AWS.

**Como excluir a função do Lambda**

1. Abra a página [Functions](https://console.aws.amazon.com/lambda/home#/functions) (Funções) no console do Lambda.

1. Selecione a função que você criou.

1. Selecione **Ações**, **Excluir**.

1. Digite **confirm** no campo de entrada de texto e escolha **Delete** (Excluir).

**Para excluir a função de execução**

1. Abra a página [Roles](https://console.aws.amazon.com/iam/home#/roles) (Funções) no console do IAM.

1. Selecione a função de execução que você criou.

1. Escolha **Excluir**.

1. Insira o nome do perfil no campo de entrada de texto e escolha **Delete** (Excluir).

**Para excluir a API**

1. Abra a [página APIs](https://console.aws.amazon.com/apigateway/main/apis) do console do API Gateway.

1. Selecione a API que você criou.

1. Selecione **Ações**, **Excluir**.

1. Escolha **Excluir**.

**Para excluir uma tabela do DynamoDB**

1. Abra a [página Tables](https://console.aws.amazon.com//dynamodb/home#tables:) (Tabelas) no console do DynamoDB.

1. Selecione a tabela que você criou.

1. Escolha **Excluir**.

1. Digite **delete** na caixa de texto.

1. Selecione **Delete table** (Excluir tabela).