Configuración de un autorizador de Lambda de API Gateway - Amazon API Gateway

Configuración de un autorizador de Lambda de API Gateway

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

Configuración de un autorizador de Lambda (consola)

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.

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.

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

  3. Elija Crear autorizador.

  4. En Nombre del autorizador, ingrese un nombre para el autorizador.

  5. En Tipo de autorizador, seleccione Lambda.

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

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

  8. En Carga de evento de Lambda, seleccione Solicitud.

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

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

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

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

  3. Elija Crear autorizador.

  4. En Nombre del autorizador, ingrese un nombre para el autorizador.

  5. En Tipo de autorizador, seleccione Lambda.

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

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

  8. En Carga de evento de Lambda, seleccione Token.

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

  10. (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.

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

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

  2. Seleccione el nombre del autorizador.

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

    Si utiliza la Ejemplo de función de Lambda con un autorizador REQUEST, haga lo siguiente:

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

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

    3. 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 en la Guía para desarrolladores de AWS Lambda.

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

  2. Seleccione el nombre del autorizador.

  3. En Probar autorizador, introduzca un valor para su token.

    Si utiliza la Ejemplo de función de Lambda con un autorizador TOKEN, haga lo siguiente:

    1. En authorizationToken, especifique allow.

  4. 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)

El siguiente comando create-authorizer muestra cómo crear un autorizador de Lambda mediante la AWS CLI.

REQUEST authorizer

En el siguiente ejemplo, se crea un autorizador de REQUEST y se utilizan 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

En el siguiente ejemplo, se crea un autorizador de TOKEN y se 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 muestra cómo probar el 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)

Después de configurar el autorizador de Lambda, debe asociarlo a un método para la API.

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.

  2. Seleccione una API.

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

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

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

  6. (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.

  7. Seleccione Guardar.

  8. 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)

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.

El siguiente comando put-method muestra cómo 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 muestra cómo actualizar un método existente para usar 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"