

# Configuración de un autorizador de Lambda de API Gateway
<a name="configure-api-gateway-lambda-authorization"></a>

Tras crear una función de Lambda, debe configurarla como un autorizador para su API. A continuación, configure su método para invocar su autorizador de Lambda y determinar si un intermediario puede invocar su método. Puede crear una función de Lambda en la misma cuenta desde la que creó la API o en una cuenta diferente.

Puede probar su autorizador de Lambda mediante las herramientas integradas en la consola de API Gateway o con [Postman](https://www.postman.com/). Para obtener instrucciones sobre cómo usar Postman para probar la función del autorizador de Lambda, consulte [Llamada a una API con un autorizador de Lambda de API Gateway](call-api-with-api-gateway-lambda-authorization.md).

## Configuración de un autorizador de Lambda (consola)
<a name="configure-api-gateway-lambda-authorization-with-console"></a>

 El siguiente procedimiento muestra cómo crear un autorizador de Lambda en la consola de la API de REST de API Gateway. Para obtener más información sobre los distintos tipos de autorizadores de Lambda, consulte [Elección de un tipo de autorizador de Lambda](apigateway-use-lambda-authorizer.md#api-gateway-lambda-authorizer-choose). 

------
#### [ REQUEST authorizer ]

**Configuración de un autorizador de Lambda `REQUEST`**

1. Inicie sesión en la consola de API Gateway, en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Seleccione una API y, a continuación, elija **Autorizadores**. 

1. Elija **Crear autorizador**. 

1. En **Nombre del autorizador**, ingrese un nombre para el autorizador.

1. En **Tipo de autorizador**, seleccione **Lambda**. 

1. En **Función de Lambda**, seleccione la Región de AWS en la que creó la función de autorizador de Lambda y, a continuación, ingrese el nombre de la función.

1. Deje en blanco **Rol de invocación de Lambda** para permitir que la consola de la API de REST de API Gateway defina una política basada en recursos. La política concede permisos a API Gateway para invocar la función del autorizador de Lambda. También puede escribir el nombre de un rol de IAM para permitir que API Gateway invoque la función del autorizador de Lambda. Para ver un rol de ejemplo, consulte [Crear un rol de IAM asumible](integrating-api-with-aws-services-lambda.md#api-as-lambda-proxy-setup-iam-role-policies). 

1. En **Carga de evento de Lambda**, seleccione **Solicitud**.

1. En **Tipo de origen de identidades**, seleccione un tipo de parámetro. Los tipos de parámetro admitidos son `Header`, `Query string`, `Stage variable` y `Context`. Para agregar más orígenes de identidades, elija **Agregar parámetro**. 

1. Para almacenar en caché la política de autorización generada por el autorizador, mantenga activado **Almacenamiento en caché de la autorización**. Cuando se activa el almacenamiento en caché de políticas, puede modificar el valor **TTL**. Si establece **TTL** en cero se desactivará el almacenamiento en caché de políticas.

   Si habilita el almacenamiento en caché, su autorizador debe devolver una política que se aplique a todos los métodos a través de una API. Para aplicar una política específica de un método, utilice las variables de contexto `$context.path` y `$context.httpMethod`.

1. Elija **Crear autorizador**.

------
#### [ TOKEN authorizer ]

**Configuración de un autorizador de Lambda `TOKEN`**

1. Inicie sesión en la consola de API Gateway, en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Seleccione una API y, a continuación, elija **Autorizadores**. 

1. Elija **Crear autorizador**. 

1. En **Nombre del autorizador**, ingrese un nombre para el autorizador.

1. En **Tipo de autorizador**, seleccione **Lambda**. 

1. En **Función de Lambda**, seleccione la Región de AWS en la que creó la función de autorizador de Lambda y, a continuación, ingrese el nombre de la función.

1. Deje en blanco **Rol de invocación de Lambda** para permitir que la consola de la API de REST de API Gateway defina una política basada en recursos. La política concede permisos a API Gateway para invocar la función del autorizador de Lambda. También puede escribir el nombre de un rol de IAM para permitir que API Gateway invoque la función del autorizador de Lambda. Para ver un rol de ejemplo, consulte [Crear un rol de IAM asumible](integrating-api-with-aws-services-lambda.md#api-as-lambda-proxy-setup-iam-role-policies). 

1. En **Carga de evento de Lambda**, seleccione **Token**.

1. En **Origen del token**, ingrese el nombre del encabezado que contiene el token de autorización. El intermediario debe incluir un encabezado con este nombre para enviar el token de autorización al autorizador de Lambda.

1. (Opcional) Si lo desea, en **Validación del token**, introduzca una instrucción RegEx. API Gateway realiza la validación inicial del token de entrada contra esta expresión e invoca el autorizador tras una validación correcta.

1. Para almacenar en caché la política de autorización generada por el autorizador, mantenga activado **Almacenamiento en caché de la autorización**. Cuando el almacenamiento en caché de las políticas esté habilitado, el nombre del encabezado especificado en **Origen del token** pasará a ser la clave de caché. Cuando se activa el almacenamiento en caché de políticas, puede modificar el valor **TTL**. Si establece **TTL** en cero se desactivará el almacenamiento en caché de políticas. 

   Si habilita el almacenamiento en caché, su autorizador debe devolver una política que se aplique a todos los métodos a través de una API. Para aplicar una política específica de un método, puede desactivar **Almacenamiento en caché de autorización**.

1. Elija **Crear autorizador**.

------

Después de crear el autorizador de Lambda, puede probarlo. El siguiente procedimiento muestra cómo probar el autorizador de Lambda.

------
#### [ REQUEST authorizer ]

**Prueba de un autorizador de Lambda `REQUEST`**

1. Inicie sesión en la consola de API Gateway, en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Seleccione el nombre del autorizador.

1. En **Probar autorizador**, introduzca un valor para su origen de identidad.

   Si utiliza la [Ejemplo de función de Lambda con un autorizador `REQUEST`](apigateway-use-lambda-authorizer.md#api-gateway-lambda-authorizer-request-lambda-function-create), haga lo siguiente:

   1. Seleccione **Encabezado** e ingrese **headerValue1** y, a continuación, elija **Agregar parámetro**.

   1. En **Tipo de origen de identidades**, seleccione **Cadena de consulta** e ingrese **queryValue1** y, a continuación, elija **Agregar parámetro**.

   1. En **Tipo de origen de identidades**, seleccione **Variable de etapa** e ingrese **stageValue1**.

   No puede modificar las variables de contexto para la invocación de la prueba, pero sí puede modificar la plantilla de eventos de prueba del **Autorizador de API Gateway** para la función de Lambda. A continuación, puede probar la función del autorizador de Lambda con variables de contexto modificadas. Para obtener más información, consulte [Prueba de funciones de Lambda en la consola](https://docs.aws.amazon.com/lambda/latest/dg/testing-functions.html) en la *Guía para desarrolladores de AWS Lambda*.

1. Elija **Probar el autorizador**.

------
#### [ TOKEN authorizer ]

**Prueba de un autorizador de Lambda `TOKEN`**

1. Inicie sesión en la consola de API Gateway, en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Seleccione el nombre del autorizador.

1. En **Probar autorizador**, introduzca un valor para su token.

   Si utiliza la [Ejemplo de función de Lambda con un autorizador `TOKEN`](apigateway-use-lambda-authorizer.md#api-gateway-lambda-authorizer-token-lambda-function-create), haga lo siguiente:

   1. En **authorizationToken**, especifique **allow**.

1. Elija **Probar el autorizador**.

    Si el autorizador de Lambda rechaza correctamente una solicitud en el entorno de prueba, la prueba produce una respuesta HTTP `200 OK`. Sin embargo, fuera del entorno de prueba, API Gateway devuelve una respuesta HTTP `403 Forbidden` y la solicitud del método produce un error.

------

## Configuración de un autorizador de Lambda (AWS CLI)
<a name="configure-api-gateway-lambda-authorization-cli"></a>

El siguiente comando [create-authorizer](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-authorizer.html) muestra cómo crear un autorizador de Lambda mediante la AWS CLI.

------
#### [ REQUEST authorizer ]

El siguiente comando [create-authorizer](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-authorizer.html) permite crear un autorizador de `REQUEST`, y utiliza el encabezado `Authorizer` y la variable de contexto `accountId` como orígenes de identidad:

```
aws apigateway create-authorizer \
    --rest-api-id 1234123412 \
    --name 'First_Request_Custom_Authorizer' \
    --type REQUEST \
    --authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \
    --identity-source 'method.request.header.Authorization,context.accountId' \
    --authorizer-result-ttl-in-seconds 300
```

------
#### [ TOKEN authorizer ]

El siguiente comando [create-authorizer](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-authorizer.html) permite crear un autorizados de `TOKEN`, y utiliza el encabezado `Authorization` como origen de identidad:

```
aws apigateway create-authorizer \
    --rest-api-id 1234123412 \
    --name 'First_Token_Custom_Authorizer' \
    --type TOKEN \
    --authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \
    --identity-source 'method.request.header.Authorization' \
    --authorizer-result-ttl-in-seconds 300
```

------

Después de crear el autorizador de Lambda, puede probarlo. El siguiente comando [test-invoke-authorizer](https://docs.aws.amazon.com/cli/latest/reference/apigateway/test-invoke-authorizer.html) permite probar un autorizador de Lambda:

```
aws apigateway test-invoke-authorizer --rest-api-id 1234123412 \
   --authorizer-id efg1234 \
   --headers Authorization='Value'
```

## Configuración de un método para utilizar un autorizador de Lambda (consola)
<a name="configure-api-gateway-lambda-authorization-method-console"></a>

Después de configurar el autorizador de Lambda, debe asociarlo a un método para la API. Si el autorizador utiliza el almacenamiento en caché de la autorización, asegúrese de actualizar la política para controlar el acceso del método adicional.

**Para configurar un método de API para que use un autorizador de Lambda**

1. Inicie sesión en la consola de API Gateway, en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Seleccione una API.

1. Elija **Recursos** y seleccione un método nuevo o elija un método existente.

1. En la pestaña **Solicitud de método**, en **Configuración de solicitud de método**, elija **Editar**. 

1. En **Autorizador**, en el menú desplegable, seleccione el autorizador de Lambda que acaba de crear. 

1.  (Opcional) Si quiere pasar el token de autorización al backend, elija los **encabezados de solicitud HTTP**. Elija **Agregar encabezado** y, a continuación, agregue el nombre del encabezado de autorización. En **Nombre**, escriba el nombre de encabezado que coincida con el nombre de **Origen del token** que especificó al crear el autorizador de Lambda para la API. Este paso no se aplica a los autorizadores `REQUEST`. 

1. Seleccione **Save**.

1. Elija **Deploy API (Implementar API)** para implementar la API en una etapa. Para un autorizador `REQUEST` que utiliza variables de etapa, también debe definir las variables de etapa necesarias y especificar los valores en la página **Etapas**.

## Configuración de un método para utilizar un autorizador de Lambda (AWS CLI)
<a name="configure-api-gateway-lambda-authorization-method-cli"></a>

Después de configurar el autorizador de Lambda, debe asociarlo a un método para la API. Puede crear un método nuevo o utilizar una operación de parche para asociar un autorizador a un método existente. Si el autorizador utiliza el almacenamiento en caché de la autorización, asegúrese de actualizar la política para controlar el acceso del método adicional.

El siguiente comando [put-method](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-method.html) permite crear un método nuevo que utilice un autorizador de Lambda:

```
aws apigateway put-method --rest-api-id 1234123412 \
  --resource-id a1b2c3 \
  --http-method PUT \
  --authorization-type CUSTOM \
  --authorizer-id efg1234
```

El siguiente comando [update-method](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-method.html) permite actualizar un método existente para que utilice un autorizador de Lambda:

```
aws apigateway update-method \
    --rest-api-id 1234123412 \
    --resource-id a1b2c3 \
    --http-method PUT \
    --patch-operations op="replace",path="/authorizationType",value="CUSTOM" op="replace",path="/authorizerId",value="efg1234"
```