API de tiempo de ejecución de AWS Lambda - AWS Lambda

API de tiempo de ejecución de AWS Lambda

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.

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"

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 AWS X-Ray encabezado de rastreo.

    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 SDK de X-Ray 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 -X POST "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ó la extensió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

  • Extension.APIKeyNotFound

  • Extension.ConfigInvalid

  • Extension.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 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. La extensión debe salir rápidamente.

ejemplo Solicitud de error de inicialización

ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}" curl -X POST "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ó la extensió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

  • Extension.APIKeyNotFound

  • Extension.ConfigInvalid

  • Extension.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 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 maligna

  • 403: prohibido

  • 500: error en contenedor. Estado no recuperable. La extensió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 -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"