Uso de la API de tiempo de ejecución de Lambda para tiempos de ejecución personalizados
AWS Lambda proporciona una API HTTP para que los tiempos de ejecución personalizados puedan recibir eventos de invocación desde Lambda y enviar los datos de respuesta dentro del entorno de ejecución de Lambda. Esta sección contiene la referencia de la API para la API de tiempo de ejecución de Lambda.
La especificación de OpenAPI para la versión de la API de tiempo de ejecución 2018-06-01 está disponible en: runtime-api.zip.
Para crear una URL de solicitud de API, los tiempos de ejecución obtienen el punto de enlace de la API de la variable de entorno AWS_LAMBDA_RUNTIME_API
; agregue la versión de la API y la ruta de recurso deseada.
ejemplo Solicitud
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"
Métodos de API
Siguiente invocación
Ruta – /runtime/invocation/next
Método: GET
El tiempo de ejecución envía este mensaje a Lambda para solicitar un evento de invocación. El cuerpo de la respuesta contiene la carga a partir de la invocación, la cual es un documento JSON que contiene datos de eventos del desencadenador de la función. Los encabezados de la respuesta contienen datos adicionales sobre la invocación.
Encabezados de respuesta
-
Lambda-Runtime-Aws-Request-Id
: el ID de solicitud, el cual identifica la solicitud que ha desencadenado la invocación de la función.Por ejemplo,
8476a536-e9f4-11e8-9739-2dfe598c3fcd
. -
Lambda-Runtime-Deadline-Ms
: la fecha en la que la función agota su tiempo de espera en milisegundos de tiempo Unix.Por ejemplo,
1542409706888
. -
Lambda-Runtime-Invoked-Function-Arn
: el ARN de la función de Lambda, la versión o el alias especificado en la invocación.Por ejemplo,
arn:aws:lambda:us-east-2:123456789012:function:custom-runtime
. -
Lambda-Runtime-Trace-Id
: el encabezado de rastreo AWS X-Ray.Por ejemplo,
Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1
. -
Lambda-Runtime-Client-Context
: en invocaciones desde AWS Mobile SDK, datos sobre la aplicación cliente y el dispositivo. -
Lambda-Runtime-Cognito-Identity
: para invocaciones desde AWS Mobile SDK, datos sobre el proveedor de identidades de Amazon Cognito.
No establezca un tiempo de espera en la solicitud GET
, ya que la respuesta puede retrasarse. Mientras Lambda arranca el tiempo de ejecución y mientras el tiempo de ejecución tiene un evento para devolver, el proceso de tiempo de ejecución se congela durante varios segundos.
El ID de solicitud hace un seguimiento de la invocación dentro de Lambda. Utilícelo para especificar la invocación al enviar la respuesta.
El encabezado de rastreo contiene el ID de rastreo, el ID principal y la decisión de muestreo. Si se muestrea la solicitud, lo hace Lambda o un servicio ascendente. El tiempo de ejecución deberá definir el valor _X_AMZN_TRACE_ID
con el valor del encabezado. El X-Ray SDK lee esto para obtener los ID y determinar si hay que rastrear la solicitud.
Respuesta de la invocación
Ruta – /runtime/invocation/
AwsRequestId
/response
Método: POST
Después de que la función se ha ejecutado hasta su finalización, el tiempo de ejecución envía una respuesta de invocación a Lambda. En el caso de invocaciones síncronas, Lambda envía la respuesta al cliente.
ejemplo Solicitud correcta
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "SUCCESS"
Error de inicialización
Si la función devuelve un error o el tiempo de ejecución encuentra un error durante la inicialización, el tiempo de ejecución utiliza este método para informar del error a Lambda.
Ruta – /runtime/init/error
Método: POST
Encabezados
Lambda-Runtime-Function-Error-Type
: tipo de error que encontró el tiempo de ejecución. Obligatorio: no
Este encabezado consta de un valor de cadena. Lambda acepta cualquier cadena, pero recomendamos un formato de <category.reason>. Por ejemplo:
Runtime.NoSuchHandler
Runtime.APIKeyNotFound
Runtime.ConfigInvalid
Runtime.UnknownReason
Body parameters (Parámetros del cuerpo)
ErrorRequest
: información sobre el error. Obligatorio: no
Este campo es un objeto JSON con la siguiente estructura:
{ errorMessage: string (text description of the error), errorType: string, stackTrace: array of strings }
Tenga en cuenta que Lambda acepta cualquier valor para errorType
.
En el ejemplo siguiente, se muestra un mensaje de error de función de Lambda en el que la función no pudo analizar los datos de evento proporcionados en la invocación.
ejemplo Error de la función
{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException", "stackTrace": [ ] }
Parámetros del cuerpo de la respuesta
StatusResponse
– Cadena. Información de estado, enviada con códigos de respuesta 202.ErrorResponse
: información adicional sobre el error, enviada con los códigos de respuesta de error. ErrorResponse contiene un tipo de error y un mensaje de error.
Códigos de respuesta
-
202: aceptada
-
403: prohibido
-
500: error en contenedor. Estado no recuperable. El tiempo de ejecución debe salir rápidamente.
ejemplo Solicitud de error de inicialización
ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}" curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/init/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"
Error de invocación
Si la función devuelve un error o el tiempo de ejecución encuentra un error, el tiempo de ejecución utiliza este método para informar del error a Lambda.
Ruta – /runtime/invocation/
AwsRequestId
/error
Método: POST
Encabezados
Lambda-Runtime-Function-Error-Type
: tipo de error que encontró el tiempo de ejecución. Obligatorio: no
Este encabezado consta de un valor de cadena. Lambda acepta cualquier cadena, pero recomendamos un formato de <category.reason>. Por ejemplo:
Runtime.NoSuchHandler
Runtime.APIKeyNotFound
Runtime.ConfigInvalid
Runtime.UnknownReason
Body parameters (Parámetros del cuerpo)
ErrorRequest
: información sobre el error. Obligatorio: no
Este campo es un objeto JSON con la siguiente estructura:
{ errorMessage: string (text description of the error), errorType: string, stackTrace: array of strings }
Tenga en cuenta que Lambda acepta cualquier valor para errorType
.
En el ejemplo siguiente, se muestra un mensaje de error de función de Lambda en el que la función no pudo analizar los datos de evento proporcionados en la invocación.
ejemplo Error de la función
{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException", "stackTrace": [ ] }
Parámetros del cuerpo de la respuesta
StatusResponse
– Cadena. Información de estado, enviada con códigos de respuesta 202.ErrorResponse
: información adicional sobre el error, enviada con los códigos de respuesta de error. ErrorResponse contiene un tipo de error y un mensaje de error.
Códigos de respuesta
-
202: aceptada
-
400: solicitud errónea
-
403: prohibido
-
500: error en contenedor. Estado no recuperable. El tiempo de ejecución debe salir rápidamente.
ejemplo Solicitud errónea
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 ERROR="{\"errorMessage\" : \"Error parsing event data.\", \"errorType\" : \"InvalidEventDataException\"}" curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"