Aller au contenu principal

Référence de l'API Invoke

Le runtime implémente l'API Invoke d'AWS Lambda™ sur LOCH_RUNTIME_INVOKE_ADDR (0.0.0.0:8080), en HTTP clair.

Point d'accès​

POST /2015-03-31/functions/{name}/invocations
ÉlémentValeurs acceptées
{name}function ou AWS_LAMBDA_FUNCTION_NAME ; <name>:$LATEST ; l'ARN arn:aws:lambda:<AWS_REGION>:000000000000:function:<name> ; l'ARN partiel 000000000000:function:<name>
?Qualifier=Absent ou $LATEST
MéthodePOST uniquement ; toute autre méthode reçoit 405 et n'invoque jamais
CorpsL'événement brut, jusqu'à LOCH_RUNTIME_MAX_PAYLOAD (6 Mio). Un corps vide est transmis tel quel

En-têtes de requête​

En-têteEffet
AuthorizationJeton bearer ou signature SigV4, sauf si l'appelant est sur la loopback
X-Amz-Invocation-TypeRequestResponse (défaut) ; DryRun répond 204 ; Event répond 400 (non pris en charge)
X-Amz-Log-Type: TailRenvoie les 4 derniers Ko de logs de l'invocation, en base64, dans X-Amz-Log-Result
X-Amz-Client-ContextObjet JSON en base64, 3 583 octets au plus ; transmis à la fonction
X-Amzn-Trace-IdDevient l'identifiant de trace s'il est valide

En SigV4, chaque en-tête x-amz-* et Content-Type doivent être signés, comme sur AWS.

Résultats de la fonction​

La livraison répond 200, avec x-amzn-RequestId, X-Amz-Executed-Version: $LATEST et Content-Type.

RésultatCorps
SuccèsLa réponse de la fonction, jamais tronquée
Erreur de la fonctionX-Amz-Function-Error: Unhandled et l'erreur postée par la fonction, telle quelle
Erreur d'initX-Amz-Function-Error: Unhandled et l'erreur d'init (Runtime.ImportModuleError, Runtime.HandlerNotFound, …)
Réponse de plus de 6 Mio + 100 octetsFunction.ResponseSizeTooLarge, puis réinitialisation
TimeoutSandbox.Timedout, Task timed out after N seconds, puis réinitialisation
Mémoire épuiséeRuntime.OutOfMemory, puis réinitialisation
Bootstrap arrêtéRuntime.ExitError, Runtime exited with error: exit status N, puis réinitialisation

Les corps d'erreur sont de la forme {"errorType":"…","errorMessage":"…"}. Comparez sur errorType, pas sur le message.

Erreurs de l'API​

Les erreurs de l'API elle-même (pas celles de la fonction) portent l'en-tête x-amzn-ErrorType: <Name>, x-amzn-RequestId, et le corps {"Type":"User","message":"…"} ("Type":"Service" pour les 5xx). Le corps d'un 429 contient aussi "Reason":"ReservedFunctionConcurrentInvocationLimitExceeded".

StatutNomQuand
400InvalidParameterValueExceptionX-Amz-Invocation-Type: Event, ou un autre paramètre invalide
400InvalidRequestContentExceptionX-Amz-Client-Context invalide
401MissingAuthenticationTokenExceptionAucun identifiant
403UnrecognizedClientExceptionMauvais jeton bearer ou access key id inconnu
403InvalidSignatureException, IncompleteSignatureExceptionSignature SigV4 fausse, expirée ou mal formée
403AccessDeniedExceptionRequête d'un navigateur web (Origin, Sec-Fetch-Site, Sec-Fetch-Dest, Sec-Fetch-User)
404ResourceNotFoundExceptionNom de fonction, qualificateur ou route inconnus
405MethodNotAllowedExceptionMéthode autre que POST
408RequestTimeoutExceptionCorps non reçu à temps
413RequestTooLargeExceptionRequête au-delà de LOCH_RUNTIME_MAX_PAYLOAD
429TooManyRequestsExceptionFile pleine ou attente trop longue, trop de connexions ou de requêtes d'une même IP. Retry-After est présent ; les SDK AWS réessaient d'eux-mêmes
503ServiceExceptionLe runtime s'arrête. Retry-After: 1

Les erreurs d'authentification ferment la connexion.

Autres routes​

RouteIdentifiantRéponse
GET /_loch/healthAucun200 {"status":"ready","queueDepth":0}, ou 503 avec initializing, error ou stopping
GET /_loch/metricsObligatoire, sauf depuis la loopbackFormat texte Prometheus : voir la référence des métriques

« AWS » et « AWS Lambda » sont des marques d'Amazon.com, Inc. ou de ses sociétés affiliées. Ce projet n'est ni affilié à Amazon ni approuvé par Amazon. Il implémente les API Runtime et Invoke d'AWS Lambda, documentées publiquement, et ne contient aucun code de l'AWS Lambda Runtime Interface Emulator.