

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejecución y depuración de recursos locales de Amazon API Gateway
<a name="debug-apigateway"></a>

Puede ejecutar o depurar recursos locales de AWS SAM API Gateway, especificados en `template.yaml`, mediante la ejecución de una configuración de lanzamiento de VS Code de `type=aws-sam` con `invokeTarget.target=api`.

**nota**  
API Gateway admite dos tipos de API: REST y HTTP. Sin embargo, la característica API Gateway con el AWS Toolkit for Visual Studio Code solo admite las API de REST. A veces las API HTTP se llaman “API Gateway V2”.

**Para ejecutar y depurar recursos de API Gateway locales**

1.  Elija uno de los siguientes enfoques para crear una configuración de lanzamiento para un recurso de AWS SAM API Gateway: 
   + **Opción 1**: visite el código fuente del controlador (archivo .js, .cs o .py) en su proyecto de AWS SAM, coloque el cursor sobre el controlador de Lambda y elija el CodeLens **Agregar configuración de depuración**. A continuación, en el menú, elija el elemento marcado como **Evento de API**.
   + **Opción 2**: edite `launch.json` y cree una nueva configuración de lanzamiento mediante la sintaxis siguiente.

     ```
     {
       "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. En el panel **Ejecutar** de VS Code, elija la configuración de lanzamiento (denominada `myConfig` en el ejemplo anterior).

1. (Opcional) Agregue puntos de interrupción al código del proyecto de Lambda.

1.  Escriba **F5** o seleccione **Reproducir** en el panel **Ejecutar**. 

1. En el panel de resultados, vea los resultados. 

## Configuración
<a name="apigateway-configuration"></a>

Cuando utiliza el valor `api` de la propiedad `invokeTarget.target`, Toolkit cambia la validación y el comportamiento de la configuración de lanzamiento para admitir un campo `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": {}
}
```

Reemplace los valores del ejemplo de la siguiente manera:

**invokeTarget.logicalId**  
Un recurso de API.

**path**  
La ruta de la API que solicita la configuración de lanzamiento; por ejemplo, `"path": "/hello"`.  
Debe ser una ruta de API válida resuelta desde el archivo `template.yaml` especificado por `invokeTarget.templatePath`.

**httpMethod**  
Uno de los verbos siguientes: “delete”, “get”, “head”, “options”, “patch”, “post”, “put”.

**payload**  
La carga JSON (cuerpo HTTP) para enviar en la solicitud, con la misma estructura y las mismas reglas que el campo [lambda.payload](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-config-ref.html).  
`payload.path` apunta a un archivo que contiene la carga JSON.  
`payload.json` especifica una carga JSON en línea.

**headers**  
Mapa opcional de pares nombre-valor, que se utiliza para especificar encabezados HTTP que se incluirán en la solicitud, tal y como se muestra en el siguiente ejemplo.  

```
"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**  
Cadena opcional que establece la propiedad `querystring` de la solicitud; por ejemplo, `"querystring": "abc=def&ghi=jkl"`.

**AWS**  
Cómo se proporciona la información de conexión de AWS. Para obtener más información, consulte la tabla de **propiedades (“aws”) de conexión de AWS** en la sección [Opciones de configuración para depurar aplicaciones sin servidor](serverless-apps-run-debug-config-ref.md).

**sam**  
Procedimiento que sigue AWS SAM CLI para compilar la aplicación. Para obtener más información, consulte la tabla de **propiedades (“sam”) de conexión de AWS SAM CLI** en la sección [Opciones de configuración para depurar aplicaciones sin servidor](serverless-apps-run-debug-config-ref.md).