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

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.

Configuración de un autorizador de Lambda entre cuentas

Ahora también puedes usar una AWS Lambda función de otra AWS cuenta como función de autorización de la 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.

Estas instrucciones dan por sentado que ya tiene una API de API Gateway en una AWS cuenta y una función autorizadora 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:

  1. Elija la API y, a continuación, en el panel de navegación principal, elija Autorizadores.

  2. Elija Crear autorizador.

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

  4. En Tipo de autorizador, seleccione Lambda.

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

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

  7. Mantenga en blanco Rol de invocación de Lambda para permitir que la consola de API Gateway defina una política basada en recursos. La política concede permiso a API Gateway para invocar la función de Lambda del autorizador. También puede escribir un rol de IAM para permitir que API Gateway invoque la función de Lambda del autorizador. Para ver un ejemplo de este rol, consulte Crear un rol de IAM asumible.

  8. En Carga de evento de Lambda, seleccione Token para un autorizador TOKEN o Solicitud para un autorizador REQUEST.

  9. Dependiendo de la elección del paso anterior, lleve a cabo alguna de las siguientes operaciones:

    1. 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, para la validación del token, introduzca una RegEx declaración. 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.

    2. 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 y Context. 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.

  10. Elija Crear autorizador.

  11. Pegue la cadena de aws lambda add-permission comandos que copió en el paso anterior en una AWS CLI ventana que esté configurada para su segunda cuenta. Reemplace AUTHORIZER_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.