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. De forma predeterminada, Lambda invoca la función de forma sincrónica (es decir, InvocationType es RequestResponse). Para invocar una función de forma asíncrona, establezca InvocationType en Event. Lambda pasa el objeto ClientContext a la función únicamente para las invocaciones sincrónicas.

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 Error handling and automatic retries in Lambda (Control de errores y reintentos automáticos en Lambda).

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 cuota o problemas con el código y la configuración de la función. Por ejemplo, Lambda devuelve el mensaje TooManyRequestsException si la ejecución de la función provocara que se superara un límite de simultaneidad en cualquiera de los niveles de cuenta (ConcurrentInvocationLimitExceeded) o el nivel de la función (ReservedFunctionConcurrentInvocationLimitExceeded).

Para las funciones con un tiempo de espera largo, el cliente puede desconectarse durante la invocación sincrónica 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. Para obtener más información sobre cómo configurar permisos para invocaciones entre cuentas, consulte Concesión de acceso a las funciones a otras cuentas.

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 invocador para pasar a la función en el objeto de contexto. Lambda pasa el objeto ClientContext a la función únicamente para las invocaciones sincrónicas.

FunctionName

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

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

  • ARN de la 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.

Patrón: (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 hay alguna 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.

Patrón: (|[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.

Puede ingresar el JSON directamente. Por ejemplo, --payload '{ "key": "value" }'. También puede especificar una ruta de archivo. Por ejemplo, --payload file://payload.json.

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.

Patrón: (\$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.

Errores

Para obtener información acerca de los errores comunes a todas las acciones, consulte Errores comunes.

EC2AccessDeniedException

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

Código de estado HTTP: 502

EC2ThrottledException

Amazon EC2 limitó a AWS Lambda durante la inicialización de la función de Lambda mediante el rol de ejecución proporcionado para la función de Lambda.

Código de estado HTTP: 502

EC2UnexpectedException

AWS Lambda recibió una excepción inesperada de cliente de Amazon EC2 cuando se configuró la función de 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 de Lambda no pudo establecer una conexión de red al sistema de archivos configurado.

Código de estado HTTP: 408

EFSMountFailureException

La función de Lambda 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 de Lambda 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 pudo crear una interfaz de red elástica en la VPC especificada como parte de la configuración de la función de Lambda, ya que se ha alcanzado el límite de interfaces de red. Para obtener más información, consulte Cuotas de Lambda.

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 la VPC de la función de Lambda no es válido.

Código de estado HTTP: 502

InvalidSubnetIDException

El ID de subred proporcionado en la configuración de la VPC de la función de 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 AWS 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 AWS KMS key 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 el estado de la clave AWS KMS key utilizada no es válido para descifrado. 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 AWS KMS key. Verifique la configuración de claves de KMS de la función.

Código de estado HTTP: 502

RecursiveInvocationException

Lambda detectó que la función se invocó en un bucle recursivo con otros recursos AWS y detuvo la invocación de la función.

Código de estado HTTP: 400

RequestTooLargeException

La carga de la solicitud superó la cuota de entrada JSON del cuerpo de la solicitud Invoke. Para obtener más información, consulte Cuotas de Lambda.

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

SnapStartException

Se ha producido un error en el enlace en tiempo de ejecución del código afterRestore(). Para obtener más información, consulte los Registros de Amazon CloudWatch.

Código de estado HTTP: 400

SnapStartNotReadyException

Lambda está inicializando la función. Puede invocar la función cuando el estado de la función pase a ser Active.

Código de estado HTTP: 409

SnapStartTimeoutException

Lambda no pudo restaurar la instantánea dentro del límite de tiempo de espera.

Código de estado HTTP: 408

SubnetIPAddressLimitReachedException

AWS Lambda no pudo configurar el acceso a la VPC de la función de 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. Para obtener más información, consulte Cuotas de Lambda.

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: