

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

# Executar e depurar recursos locais do Amazon API Gateway
<a name="debug-apigateway"></a>

Você pode executar ou depurar recursos locais do AWS SAM API Gateway, especificados em `template.yaml`. Para isso, execute a configuração de inicialização `type=aws-sam` do VS Code com o `invokeTarget.target=api`.

**nota**  
O API Gateway suporta dois tipos de APIs: REST e HTTP. No entanto, o recurso do API Gateway com o AWS Toolkit for Visual Studio Code é compatível apenas com APIs REST. Às vezes, as APIs HTTP são chamadas de “API Gateway V2 APIs”.

**Para executar e depurar recursos locais do API Gateway**

1.  Selecione uma das seguintes abordagens para criar uma configuração de execução para um recurso do API Gateway do AWS SAM: 
   + **Opção 1:** acesse o código-fonte do manipulador (arquivo .js, .cs ou .py) no projeto AWS SAM, passe o mouse sobre o manipulador do Lambda e selecione a opção **Adicionar configuração de depuração** do CodeLens. Em seguida, no menu, escolha o item marcado como **Evento de API**.
   + **Opção 2**: edite `launch.json` e crie uma configuração de inicialização usando a sintaxe a seguir.

     ```
     {
       "type": "aws-sam",
       "request": "direct-invoke",
       "name": "myConfig",
       "invokeTarget": {
         "target": "api",
         "templatePath": "n12/template.yaml",
         "logicalId": "HelloWorldFunction"
       },
       "api": {
         "path": "/hello",
         "httpMethod": "post",
         "payload": {
           "json": {}
         }
       }, 
       "sam": {},
       "aws": {}
     }
     ```

1. No painel **Executar** do VS Code, escolha a configuração de inicialização (denominada `myConfig` no exemplo acima).

1. (Opcional) Adicione pontos de interrupção ao código do projeto do Lambda.

1.  Digite **F5** ou escolha **Reproduzir** no painel **Executar**. 

1. No painel de saída, exiba os resultados. 

## Configuração
<a name="apigateway-configuration"></a>

Quando você usa o Valor da propriedade do `invokeTarget.target`, `api`, o Toolkit altera a validação da configuração de execução e o comportamento para suportar um campo da `api`. 

 

```
{
  "type": "aws-sam",
  "request": "direct-invoke",
  "name": "myConfig",
  "invokeTarget": {
    "target": "api",
    "templatePath": "n12/template.yaml",
    "logicalId": "HelloWorldFunction"
  },
  "api": {
    "path": "/hello",
    "httpMethod": "post",
    "payload": {
      "json": {}
    },
    "querystring": "abc=def&qrs=tuv",
    "headers": {
        "cookie": "name=value; name2=value2; name3=value3"
    }
  },
  "sam": {},
  "aws": {}
}
```

Substitua os valores no exemplo da seguinte forma:

**invokeTarget.logicalId**  
Um recurso da API.

**caminho**  
O caminho da API que a configuração de inicialização solicita, por exemplo, `"path": "/hello"`.  
Deve ser um caminho de API válido resolvido a partir do `template.yaml` especificado por `invokeTarget.templatePath`.

**httpMethod**  
Pode ser um dos seguintes verbos: delete", "get", "head", "options", "patch", "post", "put".

**payload**  
A carga do JSON (corpo HTTP) para enviar na solicitação, com a mesma estrutura e regras que o campo [lambda.payload](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-config-ref.html).  
`payload.path` aponta para um arquivo que contém a carga útil JSON.  
`payload.json` especifica uma carga útil JSON integrada.

**headers**  
Mapa opcional de pares de nome/valor, que você usa para especificar cabeçalhos HTTP a serem incluídos na solicitação, conforme o exemplo abaixo.  

```
"headers": {
     "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5",
     "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5",
     "cookie": "name=value; name2=value2; name3=value3",
     "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
}
```

**querystring**  
String opcional que define a `querystring` da solicitação, por exemplo, `"querystring": "abc=def&ghi=jkl"`.

**AWS**  
Como as informações de conexão da AWS são fornecidas. Para obter mais informações, consulte a tabela **AWS connection ("aws") properties** na seção [Opções de configuração para depurar aplicações sem servidor](serverless-apps-run-debug-config-ref.md).

**sam**  
Como a CLI do AWS SAM compila a aplicação. Para obter mais informações, consulte a tabela **AWS SAM CLI ("sam") properties** na seção [Opções de configuração para depurar aplicações sem servidor](serverless-apps-run-debug-config-ref.md).