Invoke - AWS Lambda

Invoke

Invoca una función de Lambda. Puede invocar una función de manera síncrona (y esperar la respuesta) o asíncrona. Para invocar una función de forma asíncrona, establezca InvocationType en Event.

Para la invocación síncrona, los detalles sobre la respuesta de la función, incluidos los errores, se incluyen en el cuerpo de la respuesta y los encabezados. Para cualquiera de los tipos de invocación, puede encontrar más información en el registro de ejecución y rastreo.

Cuando se produce un error, su función puede invocarse varias veces. El comportamiento de reintento varía según el tipo de error, el cliente, la fuente del evento y el tipo de invocación. Por ejemplo, si invoca una función de forma asíncrona y devuelve un error, Lambda ejecuta la función hasta dos veces más. Para obtener más información, consulte Comportamiento de reintento.

En la invocación asíncrona, Lambda agrega eventos a una cola antes de que los envíe a su función. Si su función no tiene suficiente capacidad para mantenerse al día con la cola, los eventos pueden perderse. Ocasionalmente, su función puede recibir el mismo evento varias veces, incluso si no se produce ningún error. Para conservar los eventos que no se procesaron, configure su función con una cola de mensajes fallidos.

El código de estado en la respuesta de la API no refleja errores de función. Los códigos de error están reservados para los errores que impiden que se ejecute la función, como los errores de permisos,errores de límite o problemas con el código y la configuración de su función. Por ejemplo, Lambda devuelve TooManyRequestsException si la ejecución de la función causaría que superara un límite de concurrencia en cualquiera de los niveles de cuenta (ConcurrentInvocationLimitExceeded) o el nivel de la función (ReservedFunctionConcurrentInvocationLimitExceeded).

Para funciones con un tiempo de espera largo, el cliente puede desconectarse durante la invocación síncrona mientras espera una respuesta. Configure el cliente HTTP, SDK, el firewall, el proxy o el sistema operativo para permitir conexiones largas con tiempo de espera o ajustes keep-alive.

Esta operación necesita permiso para la acción lambda:InvokeFunction.

Sintaxis de la solicitud

POST /2015-03-31/functions/FunctionName/invocations?Qualifier=Qualifier HTTP/1.1 X-Amz-Invocation-Type: InvocationType X-Amz-Log-Type: LogType X-Amz-Client-Context: ClientContext Payload

Parámetros de solicitud del URI

La solicitud utiliza los siguientes parámetros URI.

ClientContext

Hasta 3583 bytes de datos codificados en base64 sobre el cliente que invoca para pasar a la función en el objeto de contexto.

FunctionName

El nombre de función Lambda, la versión o el alias.

Formatos de nombre

  • Nombre de función: my-function (solo nombre), my-function:v1 (con alias).

  • ARN de función - arn:aws:lambda:us-west-2:123456789012:function:my-function.

  • ARN parcial - 123456789012:function:my-function.

Puede incluir un número de versión o alias en cualquiera de los formatos. La limitación de longitud se aplica únicamente al ARN completo. Si solo especifica el nombre de la función, se limita a 64 caracteres de longitud.

Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 170 caracteres.

Pattern: (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

Obligatorio: sí

InvocationType

Puede elegir entre las siguientes opciones.

  • RequestResponse (predeterminado): invoque la función de forma sincrónica. Mantenga la conexión abierta hasta que la función devuelva una respuesta o se agote el tiempo de espera. La respuesta de la API incluye la respuesta de la función y datos adicionales.

  • Event: invoque la función de forma asíncrona. Envíe eventos que fallan varias veces a la cola de mensajes fallidos de la función (si está configurada). La respuesta de la API solo incluye un código de estado.

  • DryRun: valide los valores de parámetro y verifique que el usuario o el rol tengan permiso para invocar la función.

Valores válidos: Event | RequestResponse | DryRun

LogType

Establezca en Tail para incluir el registro de ejecución en la respuesta. Se aplica solo a funciones invocadas de forma sincrónica.

Valores válidos: None | Tail

Qualifier

Especifique una versión o un alias para invocar una versión publicada de la función.

Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 128 caracteres.

Pattern: (|[a-zA-Z0-9$_-]+)

Cuerpo de la solicitud

La solicitud acepta los siguientes datos binarios.

Payload

El JSON que proporcionar a su función Lambda como entrada.

Sintaxis de la respuesta

HTTP/1.1 StatusCode X-Amz-Function-Error: FunctionError X-Amz-Log-Result: LogResult X-Amz-Executed-Version: ExecutedVersion Payload

Elementos de respuesta

Si la acción se realiza correctamente, el servicio devuelve la siguiente respuesta HTTP.

StatusCode

El código de estado HTTP está en el rango 200 para una solicitud correcta. Para el tipo de invocación RequestResponse, el código de estado es 200. Para el tipo de invocación Event, el código de estado es 202. Para el tipo de invocación DryRun, el código de estado es 204.

La respuesta devuelve los siguientes encabezados HTTP.

ExecutedVersion

La versión de la función que se está ejecutando. Cuando se invoca una función con un alias, esto indica en qué versión se resolvió el alias.

Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 1024 caracteres.

Pattern: (\$LATEST|[0-9]+)

FunctionError

Si está presente, indica que se ha producido un error durante la ejecución de la función. Se incluyen detalles sobre el error en la carga de la respuesta.

LogResult

Los últimos 4 KB del registro de ejecución, que está codificado en base64.

La respuesta devuelve lo siguiente como el cuerpo HTTP.

Payload

La respuesta de la función o un objeto de error.

Errors

EC2AccessDeniedException

Necesita permisos adicionales para configurar la configuración de VPC.

Código de estado HTTP: 502

EC2ThrottledException

AWS Lambda fue limitado por Amazon EC2 durante la inicialización de la función Lambda utilizando el rol de ejecución proporcionado para la función Lambda.

Código de estado HTTP: 502

EC2UnexpectedException

AWS Lambda recibió una excepción inesperada de cliente EC2 al configurar la función Lambda.

Código de estado HTTP: 502

EFSIOException

Se produjo un error al leer o escribir en un sistema de archivos conectado.

Código de estado HTTP: 410

EFSMountConnectivityException

La función no pudo establecer una conexión de red al sistema de archivos configurado.

Código de estado HTTP: 408

EFSMountFailureException

La función no pudo montar el sistema de archivos configurado debido a un problema de permisos o configuración.

Código de estado HTTP: 403

EFSMountTimeoutException

La función pudo conectarse en red al sistema de archivos configurados, pero se agotó el tiempo de espera de la operación de montaje.

Código de estado HTTP: 408

ENILimitReachedException

AWS Lambda no ha podido crear una interfaz de red elástica en la VPC especificada como parte de la configuración de la función Lambda, ya que se ha alcanzado el límite de interfaces de red.

Código de estado HTTP: 502

InvalidParameterValueException

Uno de los parámetros de la solicitud no es válido.

Código de estado HTTP: 400

InvalidRequestContentException

El cuerpo de la solicitud no se pudo analizar como JSON.

Código de estado HTTP: 400

InvalidRuntimeException

No se admite el tiempo de ejecución o la versión especificada del tiempo de ejecución.

Código de estado HTTP: 502

InvalidSecurityGroupIDException

El ID del grupo de seguridad proporcionado en la configuración de VPC de la función Lambda no es válido.

Código de estado HTTP: 502

InvalidSubnetIDException

El ID de subred proporcionado en la configuración de VPC de la función Lambda no es válido.

Código de estado HTTP: 502

InvalidZipFileException

AWS Lambda no pudo descomprimir el paquete de implementación.

Código de estado HTTP: 502

KMSAccessDeniedException

Lambda no pudo descifrar las variables de entorno porque se denegó el acceso a la clave de KMS. Verifique los permisos de KMS de la función Lambda.

Código de estado HTTP: 502

KMSDisabledException

Lambda no pudo descifrar las variables de entorno porque la clave KMS utilizada está deshabilitada. Verifique la configuración de la clave de KMS de la función Lambda.

Código de estado HTTP: 502

KMSInvalidStateException

Lambda no pudo descifrar las variables de entorno porque la clave KMS utilizada no es un estado válido para Descifrar. Verifique la configuración de claves de KMS de la función.

Código de estado HTTP: 502

KMSNotFoundException

Lambda no pudo descifrar las variables de entorno porque no se encontró la clave de KMS. Verifique la configuración de claves de KMS de la función.

Código de estado HTTP: 502

RequestTooLargeException

La carga de solicitud superó el límite de entrada JSON del cuerpo de la solicitud Invoke. Para obtener más información, consulte Límites.

Código de estado HTTP: 413

ResourceConflictException

El recurso ya existe o hay otra operación en marcha.

Código de estado HTTP: 409

ResourceNotFoundException

El recurso especificado en la solicitud no existe.

Código de estado HTTP: 404

ResourceNotReadyException

La función está inactiva y su conexión VPC ya no está disponible. Espere a que se restablezca la conexión VPC e inténtelo de nuevo.

Código de estado HTTP: 502

ServiceException

El servicio AWS Lambda detectó un error interno.

Código de estado HTTP: 500

SubnetIPAddressLimitReachedException

AWS Lambda no ha podido configurar el acceso a VPC de la función Lambda ya que una o varias subredes configuradas no tienen direcciones IP disponibles.

Código de estado HTTP: 502

TooManyRequestsException

Se ha superado el límite de rendimiento de la solicitud.

Código de estado HTTP: 429

UnsupportedMediaTypeException

El tipo de contenido del cuerpo de la solicitud Invoke no es JSON.

Código de estado HTTP: 415

Véase también

Para obtener más información sobre el uso de esta API en un SDK de AWS de un lenguaje específico, consulte: