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ónEvent
, el código de estado es 202. Para el tipo de invocaciónDryRun
, 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: