Configuración de un autorizador de Lambda de API Gateway entre cuentas
Ahora también se puede utilizar una función de AWS Lambda de otra cuenta de AWS como función de autorizador de API. Cada cuenta puede estar en cualquier región en la que Amazon API Gateway esté disponible. La función de autorizador de Lambda puede utilizar estrategias de autenticación de token al portador como OAuth o SAML. Esto permite administrar y compartir fácilmente de forma centralizada la función de autorizador de Lambda en distintas API de API Gateway.
En esta sección, mostramos cómo configurar una función de autorización de Lambda entre cuentas mediante la consola de Amazon API Gateway.
En estas instrucciones, se presupone que ya dispone de una API de API Gateway en una cuenta de AWS y de una función de autorizador de Lambda en otra cuenta.
Configurar un autorizador de Lambda entre cuentas mediante la consola de API Gateway
Inicie sesión en la consola de Amazon API Gateway en la cuenta que tiene la API y, a continuación, haga lo siguiente:
-
Elija la API y, a continuación, en el panel de navegación principal, elija Autorizadores.
-
Elija Crear autorizador.
-
En Nombre del autorizador, ingrese un nombre para el autorizador.
-
En Tipo de autorizador, seleccione Lambda.
-
En Función de Lambda, copie y pegue el ARN completo de la función del autorizador de Lambda que tiene en la segunda cuenta.
nota
En la consola de Lambda, puede encontrar el ARN de la función en la esquina superior derecha de la ventana de la consola.
-
Aparecerá una advertencia con una cadena de comandos
aws lambda add-permission
. La política concede permiso de API Gateway para invocar la función de Lambda del autorizador. Copie el comando y guárdelo para más adelante. Ejecute el comando después de crear el autorizador. -
En Carga de evento de Lambda, seleccione Token para un autorizador
TOKEN
o Solicitud para un autorizadorREQUEST
. -
Dependiendo de la elección del paso anterior, lleve a cabo alguna de las siguientes operaciones:
-
Para la opción Token, haga lo siguiente:
-
En Origen del token, ingrese el nombre del encabezado que contiene el token de autorización. El cliente de la API debe incluir un encabezado con este nombre para enviar el token de autorización al autorizador de Lambda.
-
Si lo desea, en Validación del token, ingrese 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. Esto ayuda a reducir las llamadas a la API.
-
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. 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é. Si se pasan varios valores a este encabezado de la solicitud, todos los valores se convertirán en la clave de caché y se conservará el orden.
nota
El valor de TTL predeterminado es de 300 segundos. El valor máximo es de 3600 segundos, este límite no se puede aumentar.
-
-
Para la opción Request (Solicitud), haga lo siguiente:
-
En Tipo de origen de identidades, seleccione un tipo de parámetro. Los tipos de parámetro admitidos son
Header
,Query string
,Stage variable
yContext
. Para agregar más orígenes de identidades, elija Agregar parámetro. -
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.
API Gateway utiliza las fuentes de identidad especificadas como la clave de caché del autorizador de la solicitud. Cuando está habilitado el almacenamiento en caché, API Gateway llama a la función de Lambda del autorizador solo después de verificar correctamente que todas las fuentes de identidad especificadas estén presentes en tiempo de ejecución. Si falta alguna fuente de identidad especificada, o bien es nula o está vacía, API Gateway devolverá una respuesta
401 Unauthorized
sin llamar a la función de Lambda del autorizador.Cuando se definen varias fuentes de identidad, se utilizan todas ellas para obtener la clave de caché del autorizador. Cambiar cualquiera de las partes de la clave de caché hace que el autorizador descarte el documento de políticas almacenado en caché y genere otro nuevo. Si se pasa un encabezado con varios valores en la solicitud, todos los valores se convertirán en la clave de caché y se conservará el orden.
-
Cuando está desactivado el almacenamiento en caché, no es necesario especificar ningún origen de identidades.
-
nota
Para habilitar 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 método, puede desactivar Almacenamiento en caché de la autorización.
-
-
Elija Crear autorizador.
-
Pegue la cadena de comandos
aws lambda add-permission
que copió durante un paso anterior en una ventana de la AWS CLI, que está configurada para la segunda cuenta. ReemplaceAUTHORIZER_ID
por el ID de su autorizador. Este concederá a la primera cuenta acceso a la función de autorizador de Lambda de la segunda cuenta.