Invoke - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Invoke

Invoque une fonction Lambda. Vous pouvez invoquer une fonction de manière synchrone (et attendre la réponse) ou asynchrone. Par défaut, Lambda invoque votre fonction de manière synchrone (c’est-à-dire InvocationType est RequestResponse). Pour invoquer une fonction de manière asynchrone, définissez la valeur de InvocationType sur Event. Lambda transmet l’objet ClientContext à votre fonction pour les invocations synchrones uniquement.

Pour une invocation synchrone, des détails sur la réponse de la fonction, y compris les erreurs, sont inclus dans le corps et les en-têtes de la réponse. Pour chaque type d’invocation, vous pouvez trouver des informations supplémentaires dans le journal d’exécution et le suivi.

Quand une erreur se produit, votre fonction peut être invoquée plusieurs fois. Le comportement de nouvelle tentative varie en fonction du type d’erreur, du client, de la source d’événement et du type d’invocation. Par exemple, si vous invoquez de manière asynchrone une fonction qui renvoie une erreur, Lambda exécute la fonction jusqu’à deux fois de plus. Pour plus d’informations, consultez Gestion des erreurs et tentatives automatiques dans Lambda.

Pour une invocation asynchrone, Lambda ajoute des événements à une file d’attente avant de les envoyer à la fonction. Si votre fonction ne dispose pas d’une capacité suffisante pour suivre la file d’attente, il peut arriver que des événements soient perdus. Parfois, votre fonction peut recevoir le même événement plusieurs fois, même si aucune erreur ne se produit. Pour retenir les événements qui n’ont pas été traités, configurez votre fonction avec une file d’attente de lettres mortes.

Le code d’état dans la réponse de l’API ne reflète pas les erreurs de fonction. Les codes d’erreur sont réservés aux erreurs qui empêchent l’exécution d’une fonction, telles que les erreurs d’autorisation, les erreurs liées au quota ou les problèmes de code et de configuration de la fonction. Par exemple, Lambda renvoie TooManyRequestsException si l’exécution de la fonction ferait dépasser une limite de simultanéité au niveau du compte (ConcurrentInvocationLimitExceeded) ou au niveau de la fonction (ReservedFunctionConcurrentInvocationLimitExceeded).

Pour les fonctions avec un long délai d’attente, votre client peut se déconnecter pendant l’invocation synchrone, pendant qu’il attend une réponse. Configurez votre client HTTP, SDK, pare-feu, proxy ou système d’exploitation pour permettre des connexions longues avec des paramètres de délai d’attente ou de keep-alive.

Cette opération nécessite une autorisation pour l'InvokeFunctionaction lambda :. Pour plus de détails sur la façon de configurer les autorisations pour les invocations intercomptes, consultez Octroi d’accès intercomptes à la fonction.

Syntaxe de la demande

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

Paramètres de demande URI

La demande utilise les paramètres URI suivants.

ClientContext

Jusqu’à 3 583 octets de données codées en base 64 sur le client invoquant pour transmettre à la fonction dans l’objet contextuel. Lambda transmet l’objet ClientContext à votre fonction pour les invocations synchrones uniquement.

FunctionName

Nom de l’alias, de la version ou de la fonction Lambda.

Formats de nom
  • Nom de la fonctionmy-function (nom-uniquement), my-function:v1 (avec alias).

  • ARN de fonctionarn:aws:lambda:us-west-2:123456789012:function:my-function.

  • ARN partiel123456789012:function:my-function.

Vous pouvez ajouter un numéro de version ou un alias à l’un des formats. Contrainte de longueur qui s’applique uniquement à l’ARN complet. Si vous spécifiez uniquement le nom de la fonction, ce dernier est limité à 64 caractères.

Contraintes de longueur : Longueur minimum de 1. Longueur maximum de 170.

Modèle : (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-_]+))?

Obligatoire : oui

InvocationType

Choisissez parmi les options suivantes.

  • RequestResponse (par défaut) – Invoquer la fonction de manière synchrone. Garder la connexion ouverte jusqu’à ce que la fonction renvoie une réponse ou expire. La réponse de l’API inclut la réponse de la fonction et des données supplémentaires.

  • Event – Invoquer la fonction de manière asynchrone. Envoyez les événements qui échouent plusieurs fois à la file d’attente de lettres mortes de la fonction (si elle est configurée). La réponse de l’API inclut uniquement un code d’état.

  • DryRun – Valider les valeurs des paramètres et vérifier que l’utilisateur ou le rôle possèdent l’autorisation pour invoquer la fonction.

Valeurs valides : Event | RequestResponse | DryRun

LogType

Définissez sur Tail pour inclure le journal d’exécution dans la réponse. S’applique uniquement aux fonctions invoquées de manière synchrone.

Valeurs valides : None | Tail

Qualifier

Spécifiez une version ou un alias pour invoquer une version publiée de la fonction.

Contraintes de longueur : Longueur minimum de 1. Longueur maximum de 128.

Modèle : (|[a-zA-Z0-9$_-]+)

Corps de la demande

La demande accepte les données binaires suivantes.

Payload

JSON à fournir à votre fonction Lambda en entrée.

Vous pouvez saisir directement le format JSON. Par exemple, --payload '{ "key": "value" }'. Vous pouvez également spécifier un chemin d’accès au fichier. Par exemple, --payload file://payload.json.

Syntaxe de la réponse

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

Eléments de réponse

Si l’action aboutit, le service renvoie la réponse HTTP suivante.

StatusCode

Le code d’état HTTP s’inscrit dans la plage 200 pour une demande réussie. Pour le type d’invocation RequestResponse, ce code d’état est 200. Pour le type d’invocation Event, ce code d’état est 202. Pour le type d’invocation DryRun, le code d’état est 204.

La réponse renvoie les en-têtes HTTP suivants.

ExecutedVersion

Version de la fonction exécutée. Lorsque vous invoquez une fonction avec un alias, cela indique la version résultant de la résolution de l’alias.

Contraintes de longueur : Longueur minimum de 1. Longueur maximum de 1024.

Modèle : (\$LATEST|[0-9]+)

FunctionError

Indique qu’une erreur s’est produite lors de l’exécution de la fonction. Les détails sur l’erreur sont inclus dans la charge utile de la réponse.

LogResult

4 derniers Ko du journal d’exécution codé en base 64.

La réponse renvoie ce qui suit en tant que corps HTTP.

Payload

Réponse de la fonction, ou objet erreur.

Erreurs

Pour plus d'informations sur les erreurs courantes pour toutes les actions, consultez Erreurs courantes.

EC2AccessDeniedException

Besoin d’autorisations supplémentaires pour configurer les paramètres du VPC.

Code d’état HTTP : 502

EC2ThrottledException

Amazon EC2 a limité AWS Lambda lors de l’initialisation de la fonction Lambda en utilisant le rôle d’exécution fourni pour la fonction.

Code d’état HTTP : 502

EC2UnexpectedException

AWS Lambda a reçu une exception client Amazon EC2 inattendue lors de la configuration de la fonction Lambda.

Code d’état HTTP : 502

EFSIOException

Une erreur s’est produite lors de la lecture d’un système de fichiers connecté, ou lors de l’écriture sur celui-ci.

Code d’état HTTP : 410

EFSMountConnectivityException

La fonction Lambda n’a pas pu établir une connexion réseau au système de fichiers configuré.

Code d’état HTTP : 408

EFSMountFailureException

La fonction Lambda n’a pas pu monter le système de fichiers configuré en raison d’un problème d’autorisation ou de configuration.

Code d’état HTTP : 403

EFSMountTimeoutException

La fonction Lambda a établi une connexion réseau avec le système de fichiers configuré, mais l’opération de montage a été interrompue.

Code d’état HTTP : 408

ENILimitReachedException

AWS Lambda n’a pas pu créer une interface réseau Elastic dans le VPC, spécifié comme faisant partie de la configuration de la fonction Lambda, car la limite des interfaces réseau a été atteinte. Pour plus d’informations, consultez Quotas Lambda.

Code d’état HTTP : 502

InvalidParameterValueException

L’un des paramètres dans la demande n’est pas valide.

Code d’état HTTP : 400

InvalidRequestContentException

Le corps de la demande n’a pas pu être analysé en tant que JSON.

Code d’état HTTP : 400

InvalidRuntimeException

L’exécution ou la version d’exécution spécifiée n’est pas prise en charge.

Code d’état HTTP : 502

InvalidSecurityGroupIDException

L’ID de groupe de sécurité spécifié dans la configuration VPC de la fonction Lambda n’est pas valide.

Code d’état HTTP : 502

InvalidSubnetIDException

L’ID de sous-réseau spécifié dans la configuration VPC de la fonction Lambda n’est pas valide.

Code d’état HTTP : 502

InvalidZipFileException

AWS Lambda n’est pas parvenu à décompresser le package de déploiement.

Code d’état HTTP : 502

KMSAccessDeniedException

Lambda n’a pas pu déchiffrer les variables d’environnement, car l’accès AWS KMS a été refusé. Vérifiez les autorisations KMS de la fonction Lambda.

Code d’état HTTP : 502

KMSDisabledException

Lambda n’a pas pu déchiffrer les variables d’environnement, car le AWS KMS key utilisé est désactivé. Vérifiez les paramètres de clé KMS de la fonction Lambda.

Code d’état HTTP : 502

KMSInvalidStateException

Lambda n’a pas pu déchiffrer les variables d’environnement, car l’état du AWS KMS key utilisé n’est pas valide pour le déchiffrage. Vérifiez les paramètres de clé KMS de la fonction.

Code d’état HTTP : 502

KMSNotFoundException

Lambda n’a pas pu déchiffrer les variables d’environnement, car le AWS KMS key utilisé n’a pas été trouvé. Vérifiez les paramètres de clé KMS de la fonction.

Code d’état HTTP : 502

RecursiveInvocationException

Lambda a détecté que votre fonction était invoquée dans une boucle récursive avec d’autres ressources AWS et a arrêté l’invocation de votre fonction.

Code d’état HTTP : 400

RequestTooLargeException

La charge utile de la demande dépassait le quota d’entrée JSON de corps de demande Invoke. Pour plus d’informations, consultez Quotas Lambda.

Code d’état HTTP : 413

ResourceConflictException

La ressource existe déjà ou une autre opération est en cours.

Code d’état HTTP : 409

ResourceNotFoundException

La ressource spécifiée dans la demande n’existe pas.

Code d’état HTTP : 404

ResourceNotReadyException

La fonction est inactive et sa connexion VPC n’est plus disponible. Attendez que la connexion VPC soit rétablie, puis réessayez.

Code d’état HTTP : 502

ServiceException

Le service AWS Lambda a rencontré une erreur interne.

Code d’état HTTP : 500

SnapStartException

Le hook d’exécution afterRestore() a rencontré une erreur. Pour plus d'informations, consultez les CloudWatch journaux Amazon.

Code d’état HTTP : 400

SnapStartNotReadyException

Lambda est en train d’initialiser votre fonction. Vous pouvez invoquer la fonction lorsque l’état de la fonction devient Active.

Code d’état HTTP : 409

SnapStartTimeoutException

Lambda n’a pas pu restaurer l’instantané dans le délai imparti.

Code d’état HTTP : 408

SubnetIPAddressLimitReachedException

AWS Lambda n’a pas pu configurer l’accès VPC pour la fonction Lambda, car un ou plusieurs sous-réseaux configurés n’ont pas d’adresse IP disponible.

Code d’état HTTP : 502

TooManyRequestsException

La limite de débit de demande a été dépassée. Pour plus d’informations, consultez Quotas Lambda.

Code d’état HTTP : 429

UnsupportedMediaTypeException

Le type de contenu du corps de la demande Invoke n’est pas JSON.

Code d’état HTTP : 415

consultez aussi

Pour plus d’informations sur l’utilisation de cette API dans l’un des kits SDK AWS spécifiques au langage, consultez les ressources suivantes :