Entrada de un autorizador de Lambda de API Gateway - Amazon API Gateway

Entrada de un autorizador de Lambda de API Gateway

En la siguiente sección se explica el formato de la entrada de API Gateway para un autorizador de Lambda.

Formato de entrada de TOKEN

Para un autorizador de Lambda (que anteriormente se denominaba autorizador personalizado) del tipo TOKEN, debe especificar un encabezado personalizado como Token Source (Origen del token) al configurar el autorizador para una API. El cliente de la API debe transmitir el token de autorización necesario en ese encabezamiento en la solicitud de entrada. Tras recibir la solicitud del método de entrada, API Gateway extrae el token del encabezado personalizado. A continuación, transmite el token como propiedad authorizationToken del objeto event de la función de Lambda, además del ARN del método como propiedad methodArn:

{ "type":"TOKEN", "authorizationToken":"{caller-supplied-token}",     "methodArn":"arn:aws:execute-api:{regionId}:{accountId}:{apiId}/{stage}/{httpVerb}/[{resource}/[{child-resources}]]" }

En este ejemplo, la propiedad type especifica el tipo de autorizador, que es un autorizador TOKEN. {caller-supplied-token} procede del encabezado de autorización de una solicitud del cliente y puede ser cualquier valor de cadena. methodArn es el ARN de la solicitud del método de entrada y lo rellena API Gateway de acuerdo con la configuración del autorizador de Lambda.

Formato de entrada de REQUEST

Para un autorizador de Lambda del tipo REQUEST, API Gateway transmite los parámetros de solicitud a la función de Lambda del autorizador como parte del objeto event. Los parámetros de solicitud incluyen encabezados, parámetros de ruta, parámetros de cadenas de consulta, variables de etapa y algunas variables de contexto de solicitud. El intermediario de la API puede definir parámetros de ruta, encabezados y parámetros de cadenas de consulta. El desarrollador de la API debe establecer las variables de etapa durante la implementación de la API y API Gateway proporciona el contexto de la solicitud en tiempo de ejecución.

nota

Los parámetros de la ruta se pueden pasar como parámetros de solicitud a la función del autorizador de Lambda pero no se pueden usar como fuentes de identidad.

El siguiente ejemplo muestra una entrada de un autorizador REQUEST para un método de la API (GET /request) con una integración de proxy:

{ "type": "REQUEST", "methodArn": "arn:aws:execute-api:us-east-1:123456789012:abcdef123/test/GET/request", "resource": "/request", "path": "/request", "httpMethod": "GET", "headers": { "X-AMZ-Date": "20170718T062915Z", "Accept": "*/*", "HeaderAuth1": "headerValue1", "CloudFront-Viewer-Country": "US", "CloudFront-Forwarded-Proto": "https", "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Is-Mobile-Viewer": "false", "User-Agent": "..." }, "queryStringParameters": { "QueryString1": "queryValue1" }, "pathParameters": {}, "stageVariables": { "StageVar1": "stageValue1" }, "requestContext": { "path": "/request", "accountId": "123456789012", "resourceId": "05c7jb", "stage": "test", "requestId": "...", "identity": { "apiKey": "...", "sourceIp": "...", "clientCert": { "clientCertPem": "CERT_CONTENT", "subjectDN": "www.example.com", "issuerDN": "Example issuer", "serialNumber": "a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1", "validity": { "notBefore": "May 28 12:30:02 2019 GMT", "notAfter": "Aug 5 09:36:04 2021 GMT" } } }, "resourcePath": "/request", "httpMethod": "GET", "apiId": "abcdef123" } }

requestContext es un mapa de pares de clave-valor y se corresponde con la variable $context. Su resultado depende de la API.

API Gateway podría agregar nuevas claves al mapa. Para obtener más información sobre la entrada de la función de Lambda en una integración de proxy, consulte Formato de entrada de una función de Lambda para la integración de proxy.