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
.
procede del encabezado de autorización de una solicitud del cliente y puede ser cualquier valor de cadena. {caller-supplied-token}
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.