Appel de fonctions
Découvrez les différentes façons d'appeler des fonctions déployées dans le service des fonctions pour OCI.
Vous pouvez appeler une fonction que vous avez déployée dans le service des fonctions pour OCI de différentes façons :
- À l'aide de l'interface de ligne de commande Fn Project.
- À l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure.
- À l'aide des trousses SDK Oracle Cloud Infrastructure.
- En créant une demande HTTP signée pour le point d'extrémité d'appel de la fonction. Chaque fonction possède un point d'extrémité d'appel.
Chacune des méthodes ci-dessus appelle la fonction au moyen de demandes à l'API. Toute demande destinée à l'API doit être authentifiée en incluant une signature et l'OCID du compartiment auquel appartient la fonction dans l'en-tête de la demande. Une demande de ce type est une demande "signée". La signature inclut des données d'identification Oracle Cloud Infrastructure dans un formulaire chiffré.
Si vous utilisez l'interface de ligne de commande Fn Project ou l'interface de ligne de commande Oracle Cloud Infrastructure pour appeler une fonction, l'authentification est gérée pour vous. Voir Utilisation de l'interface de ligne de commande Fn Project pour appeler des fonctions et Utilisation de l'interface de ligne de commande Oracle Cloud Infrastructure pour appeler des fonctions.
Si vous utilisez une trousse SDK Oracle Cloud Infrastructure pour appeler une fonction, vous pouvez utiliser la trousse SDK pour gérer l'authentification. Voir Utilisation de trousses SDK pour appeler des fonctions.
Si vous envoyez une demande HTTP signée au point d'extrémité d'une fonction, vous devrez traiter l'authentification vous-même en incluant une signature et l'OCID du compartiment associé à la fonction dans l'en-tête de la demande. Vous pouvez procéder de différentes façons :
- À l'aide de la commande
raw-requestde l'interface de ligne de commande Oracle Cloud Infrastructure. Voir Envoi d'une demande signée au point d'extrémité d'appel d'une fonction (à l'aide de la commande raw-request de l'interface de ligne de commande Oracle Cloud Infrastructure). - En écrivant du code pour signer des demandes par programmation. Pour plus d'informations sur les données d'identification requises et la signature des demandes, voir Signatures des demandes.
Notez que la façon dont vous appelez une fonction et le type d'appel que vous spécifiez déterminent la durée maximale d'exécution de la fonction et les autres comportements d'exécution.
Si vous ne parvenez pas à effectuer une des étapes de cette rubrique, consultez les solutions aux problèmes communs (voir Dépannage du service des fonctions pour OCI).
Types d'appel synchrones et détachés
Lorsque vous appelez une fonction, vous pouvez spécifier un type pour l'appel de la fonction. Le type d'appel de fonction détermine la responsabilité du traitement des résultats, lorsque le contrôle est retourné à l'appelant et le code d'état HTTP retourné, comme suit :
- Synchroniser : Si vous spécifiez Synchroniser comme type d'appel de fonction (valeur par défaut), OCI Functions exécute la demande de manière synchrone. Une fois l'achèvement réussi, OCI Functions émet un code de statut HTTP 200 et retourne le résultat à l'appelant, ainsi qu'un contrôle.
- Détaché : Si vous spécifiez Détaché comme type d'appel de fonction, OCI Functions exécute la demande de manière asynchrone. Dès le début du traitement, OCI Functions émet un code de statut HTTP 202 et retourne le contrôle à l'appelant. La fonction elle-même est responsable du traitement des résultats.
Le type d'appel de fonction Sync est également appelé appel de la fonction en mode Sync ou appel synchrone. Le type d'appel Détaché est également appelé appel de la fonction en mode Détaché ou appel détaché.
L'appel détaché peut être meilleur que l'appel synchrone pour les fonctions qui prennent beaucoup de temps à s'exécuter, car l'appel détaché prend en charge une temporisation d'exécution plus longue et prend également en charge des options de configuration supplémentaires pour les destinations de diffusion après l'exécution (voir Appel de fonctions en mode détaché). Les avantages d'un appel détaché sont généralement très utiles pour les fonctions que vous planifiez d'exécuter de manière récurrente. Par conséquent, les fonctions que vous programmez sont toujours appelées avec le type d'appel Détaché (voir Fonctions de programmation).
Pour spécifier le type d'appel de fonction :
- Lors de l'appel d'une fonction à l'aide de la commande
fn function invokede l'interface de ligne de commande OCI, utilisez le paramètre--fn-invoke-type. Par exemple :oci fn function invoke --function-id ocid1.fnfunc.oc1.phx.aaaa____uxoa --file "-" --body "" --fn-invoke-type "detached" - Lors de l'appel d'une fonction à partir d'une autre fonction à l'aide de l'un des trousses FDK, spécifiez le type d'appel dans l'appel de fonction. Par exemple, à l'aide de la trousse FDK Python :
resp = client.invoke_function(function_id=function_ocid, invoke_function_body=function_body, fn_invoke_type='detached') - Lors de l'appel d'une fonction à l'aide de la commande
raw-requestde l'interface de ligne de commande OCI, incluez"fn-invoke-type"dans le paramètre--request- headers. Par exemple :oci raw-request --http-method POST --target-uri https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke --request-body "" --request-headers '{"fn-invoke-type" : "detached"}'
Temporisation de fonction, temporisation d'appel de fonction et temporisation d'exécution de fonction
La temporisation de la fonction peut être définie plus précisément comme suit :
- Temporisation d'appel de fonction, qui fait référence à la durée pendant laquelle un client appelant une fonction attendra une réponse de la fonction avant d'abandonner.
- Temporisation de l'exécution de la fonction, qui fait référence à la durée pendant laquelle le service des fonctions pour OCI autorise l'exécution d'une fonction, avant de mettre fin à l'exécution.
Lorsque vous appelez une fonction dont le type d'appel est Sync, la temporisation d'appel de la fonction et la temporisation d'exécution de la fonction sont identiques. Toutefois, lorsque vous appelez une fonction dont le type d'appel est Détaché, le paramètre Temporisation d'appel détaché (detachedModeTimeoutInSeconds) contrôle la temporisation d'exécution de la fonction et est distinct de la temporisation d'appel de la fonction.
La façon dont vous appelez une fonction et le type d'appel que vous spécifiez déterminent la durée maximale d'exécution de la fonction, comme suit :
- Si vous appelez une fonction à l'aide de l'interface de ligne de commande Fn Project (avec le type d'appel Sync), le paramètre Synchronous invocation timeout (Temporisation d'appel synchrone) (
timeoutInSeconds) que vous spécifiez dans la définition de la fonction est appliqué (la valeur par défaut est 30 secondes). Voir Modification des paramètres de mémoire par défaut et de temporisation. - Si vous appelez une fonction à l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure (avec la synchronisation comme type d'appel), la valeur du paramètre global
--read-timeoutde l'interface de ligne de commande OCI est appliquée (la valeur par défaut est 60 secondes). Voir oci fn function invoke. - Si vous appelez une fonction à l'aide des trousses SDK pour Oracle Cloud Infrastructure (avec la synchronisation comme type d'appel), la temporisation de lecture spécifiée pour le client est appliquée. Par exemple, voir la trousse SDK Java et la documentation sur la trousse SDK Python.
- Si vous appelez une fonction à l'aide de la trousse SDK PL/SQL, la valeur de
UTL_HTTP.set_transfer_timeoutest appliquée (la valeur par défaut est 60 secondes). - Si vous appelez une fonction à partir de l'API REST DBMS_CLOUD à l'aide de DBMS_CLOUD.SEND_REQUEST, la valeur de
UTL_HTTP.set_transfer_timeoutest appliquée (la valeur par défaut est 60 secondes). -
Si vous appelez une fonction dont le type d'appel est Détaché, le paramètre Temporisation d'appel détaché (
detachedModeTimeoutInSeconds) que vous spécifiez dans la définition de la fonction est appliqué (entre 5 secondes et 3600 secondes, ou 1 heure). Si vous appelez une fonction dont le type d'appel est Détaché et le paramètre Temporisation d'appel détaché (detachedModeTimeoutInSeconds) n'est pas défini, la valeur du paramètre Temporisation d'appel synchrone (timeoutInSeconds) est appliquée. Voir Appel de fonctions en mode détaché.
Utilisation de l'interface de ligne de commande Fn Project pour appeler des fonctions
Pour appeler une fonction déployée dans le service des fonctions pour OCI à l'aide de l'interface de ligne de commande Fn Project :
-
Connectez-vous à votre environnement de développement en tant que développeur de fonctions.
-
Dans une fenêtre de terminal, entrez :
fn invoke <app-name> <function-name>où :
-
<app-name>est le nom de l'application contenant la fonction à appeler -
<function-name>est le nom de la fonction à appeler
Par exemple :
fn invoke helloworld-app helloworld-funcSortie :
Hello World !Conseil
Si vous souhaitez transmettre des arguments et des valeurs à une fonction, préfixez la commande
fn invokeavececho -n '<argument>=<value>' |Si la fonction attend l'argument et une valeur JSON, utilisez un format JSON valide. Par exemple :
echo -n '{"name":"John"}' | fn invoke helloworld-app helloworld-funcSortie :
Hello John ! -
Utilisation de l'interface de ligne de commande Oracle Cloud Infrastructure pour appeler des fonctions
Si vous avez installé l'interface de ligne de commande Oracle Cloud Infrastructure, vous pouvez l'utiliser pour envoyer des demandes d'API pour appeler des fonctions. Entre autres, l'interface de ligne de commande Oracle Cloud Infrastructure simplifie l'authentification dans Oracle Cloud Infrastructure. Pour plus d'informations sur l'utilisation de l'interface de ligne de commande Oracle Cloud Infrastructure, voir Interface de ligne de commande (CLI).
Ces instructions supposent que :
- Vous avez déjà installé et configuré l'interface de ligne de commande Oracle Cloud Infrastructure.
- Vous voulez, en tant que développeur de fonctions, appeler une fonction qui est configurée pour votre environnement de développement.
Pour appeler une fonction à l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure :
-
Connectez-vous à votre environnement de développement en tant que développeur de fonctions.
-
Dans une fenêtre de terminal, entrez :
oci fn function invoke --function-id <function-ocid> --file "<output-filepath>" --body "<request-parameters>"où :
-
<function-ocid>est l'OCID de la fonction à appeler. Pour rechercher un OCID de fonction, utilisez la commandefn inspectpour voir la valeur de la propriétéidde la fonction (voir Liste des fonctions). -
<output-filepath>est le chemin et le nom d'un fichier dans lequel écrire la réponse. Pour écrire la réponse dans stdout, spécifiez--file "-" <request-parameters>sont des arguments et des valeurs facultatifs à transmettre à la fonction. Si la fonction attend des arguments et des valeurs dans le format JSON, utilisez un format JSON valide. Par exemple,--body '{"name":"John"}'. Notez que vous devez inclure--body ""dans la demande, même s'il n'y a aucun paramètre de demande à transmettre.
Par exemple :
oci fn function invoke --function-id ocid1.fnfunc.oc1.phx.aaaa____uxoa --file "-" --body ""Sortie :
Hello World !oci fn function invoke --function-id ocid1.fnfunc.oc1.phx.aaaa____uxoa --file "-" --body '{"name":"John"}'Sortie :
Hello John !
-
Utilisation de trousses SDK pour appeler des fonctions
Si vous écrivez un programme pour appeler une fonction dans une langue pour laquelle une trousse SDK Oracle Cloud Infrastructure existe, nous vous recommandons d'utiliser cette trousse SDK pour envoyer des demandes d'API pour appeler la fonction. Entre autres, la trousse SDK simplifie l'authentification Oracle Cloud Infrastructure.
Notez que lorsque vous utilisez une trousse SDK pour appeler une fonction, vous ne spécifiez pas le point d'extrémité d'appel complet que vous spécifiez lors de l'utilisation de la commande raw-request de l'interface de ligne de commande Oracle Cloud Infrastructure (voir Obtention du point d'extrémité d'appel d'une fonction). À la place, spécifiez uniquement la première partie du point d'extrémité d'appel de la fonction. Par exemple, lors de l'utilisation d'une trousse SDK, ne spécifiez pas le point d'extrémité d'appel de la fonction comme https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke. À la place, spécifiez le point d'extrémité d'appel de la fonction comme https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com.
Pour plus d'informations sur l'utilisation de l'API et sur les demandes de signature, voir la documentation de l'API REST et Données d'identification de sécurité. Pour plus d'informations sur les trousses SDK, voir Trousses SDK et interface de ligne de commande.
Utilisez l'opération d'API InvokeFunction pour appeler des fonctions.
Obtention du point d'extrémité d'appel d'une fonction
Lorsque vous appelez une fonction à l'aide de la commande raw-request de l'interface de ligne de commande Oracle Cloud Infrastructure, vous devez spécifier le point d'extrémité d'appel de la fonction.
Pour obtenir le point d'extrémité d'appel d'une fonction :
-
Connectez-vous à votre environnement de développement en tant que développeur de fonctions.
-
Dans une fenêtre de terminal, entrez :
fn inspect function <app-name> <function-name>où :
-
<app-name>est le nom de l'application contenant la fonction pour laquelle vous voulez obtenir le point d'extrémité d'appel -
<function-name>est le nom de la fonction pour laquelle vous voulez obtenir le point d'extrémité d'appel
Par exemple :
fn inspect function helloworld-app helloworld-funcSortie :
{ "annotations": { "fnproject.io/fn/invokeEndpoint": "https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke", ... }Le point d'extrémité d'appel de la fonction est la valeur de
"fnproject.io/fn/invokeEndpoint". Par exemple,"https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke"(abrégé à des fins de lisibilité). -
Envoi d'une demande signée au point d'extrémité d'appel d'une fonction (à l'aide de la commande raw-request de l'interface de ligne de commande Oracle Cloud Infrastructure)
Si vous avez installé l'interface de ligne de commande Oracle Cloud Infrastructure, vous pouvez l'utiliser pour envoyer des demandes d'API pour appeler des fonctions. Entre autres, l'interface de ligne de commande simplifie l'authentification Oracle Cloud Infrastructure. Pour plus d'informations sur l'utilisation de l'interface de ligne de commande Oracle Cloud Infrastructure, voir Interface de ligne de commande (CLI).
Ces instructions supposent que :
- Vous avez déjà installé et configuré l'interface de ligne de commande Oracle Cloud Infrastructure.
- Vous voulez, en tant que développeur de fonctions, appeler une fonction qui est configurée pour votre environnement de développement.
Pour appeler une fonction déployée dans le service des fonctions pour OCI en envoyant une demande signée au point d'extrémité d'appel de la fonction à l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure raw-request :
-
Connectez-vous à votre environnement de développement en tant que développeur de fonctions.
-
Obtenez le point d'extrémité d'appel de la fonction (voir Obtention du point d'extrémité d'appel d'une fonction).
Par exemple,
"fnproject.io/fn/invokeEndpoint": "https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke"(abrégé à des fins de lisibilité). -
Pour utiliser la commande
raw-requestde l'interface de ligne de commande Oracle Cloud Infrastructure pour appeler la fonction en envoyant une demande POST signée au point d'extrémité d'appel de la fonction, entrez :oci raw-request --http-method POST --target-uri <invoke-endpoint> --request-body "<request-parameters>"où :
<invoke-endpoint>est le point d'extrémité que vous avez obtenu à l'étape précédente.<request-parameters>sont des arguments et des valeurs facultatifs à transmettre à la fonction. Si la fonction attend des arguments et des valeurs dans le format JSON, utilisez un format JSON valide. Notez que vous devez inclure--request-body ""dans la demande, même s'il n'y a aucun paramètre de demande à transmettre.
Par exemple :
oci raw-request --http-method POST --target-uri https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke --request-body ""Sortie :
Hello World !oci raw-request --http-method POST --target-uri https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke --request-body '{"name":"John"}'Sortie :
Hello John !
- Si une phrase secrète a été fournie pour chiffrer la clé de signature d'API, entrez la phrase secrète à l'invite.
Appel de fonctions en mode détaché
Appeler une fonction avec le type d'appel Detached lorsque :
- Vous souhaitez appeler une fonction dont l'exécution prend beaucoup de temps.
- Vous souhaitez que la fonction s'exécute de manière asynchrone, de sorte que le contrôle soit renvoyé à l'appelant immédiatement après l'appel de la fonction sans attendre les résultats de l'appel.
- Vous voulez spécifier les destinations vers lesquelles envoyer les résultats des appels réussis et en échec.
L'appel détaché permet aux charges de travail de longue durée (telles que les tâches ETL volumineuses, les tâches d'intelligence artificielle et d'apprentissage automatique et les intégrations) de se terminer sans être contraintes par la temporisation d'appel synchrone.
Spécification de la temporisation et des destinations pour les appels détachés d'une fonction
Lors de la création ou de la mise à jour d'une fonction, vous pouvez éventuellement définir :
- le paramètre Detached invocation timeout (Temporisation d'appel détaché) (
detachedModeTimeoutInSeconds) pour spécifier la temporisation d'exécution de la fonction pour les appels détachés - la destination de réussite et la destination d'échec (
successDestinationetfailureDestinationrespectivement), pour spécifier les destinations auxquelles envoyer les résultats des appels détachés. Notez que les destinations réussite et échec s'appliquent uniquement aux appels détachés. Si vous spécifiez une destination de réussite ou d'échec, OCI Functions fournit :- Enregistrement d'appel vers la destination de réussite lorsqu'un appel détaché réussit.
- Enregistrement d'appel vers la destination d'échec lorsqu'un appel détaché échoue.
Les destinations prises en charge pour les résultats des appels détachés sont le service d'avis, le service de file d'attente et le service de diffusion en continu. Notez que pour écrire dans le service de destination, le service des fonctions pour OCI nécessite des autorisations de politique IAM (voir Création de politiques IAM pour les réussites d'appel détachées et les destinations d'échec).
Vous pouvez utiliser la console, l'interface de ligne de commande OCI et l'API pour spécifier la temporisation et les destinations des appels détachés.
Par exemple, vous pouvez entrer la commande d'interface de ligne de commande OCI suivante pour créer une fonction qui, lorsqu'elle est appelée avec un type d'appel Détaché, s'exécute pendant 1800 secondes avant la temporisation et pour laquelle les résultats des appels réussis et en échec sont envoyés aux destinations spécifiées dans success-dest.json et failure-dest.json respectivement :
oci fn function create --application-id <ocid> --display-name "fn_longer_demo" --image <image> --memory-in-mbs 256 \
--detached-mode-timeout-in-seconds 1800 \
--success-destination file://success-dest.json \
--failure-destination file://failure-dest.json
où :
success-dest.jsoncontient la chaîne JSON suivante :{"kind": "STREAM", "streamId": "ocid1.stream.oc1...."}failure-dest.jsoncontient la chaîne JSON suivante :{"kind": "QUEUE", "queueId": "ocid1.queue.oc1....", "channelId": "failure1234"}
Voir SuccessDestinationDetails et FailureDestinationDetails dans la documentation sur l'API pour connaître les attributs à spécifier pour différents services de destination.
Création de politiques IAM pour la réussite des appels détachés et les destinations d'échec
OCI Functions nécessite des autorisations IAM pour écrire les résultats des appels détachés vers les destinations de réussite et d'échec que vous spécifiez dans les définitions de fonction. Le service d'avis, le service de diffusion en continu et le service de file d'attente sont pris en charge pour les destinations réussite et échec. Si les autorisations n'existent pas déjà, vous devez créer les politiques IAM appropriées qui incluent les énoncés de politique nécessaires.
Par exemple :
- Pour permettre au service des fonctions pour OCI d'écrire les résultats des appels détachés vers les destinations de réussite et d'échec dans le service d'avis, incluez un énoncé de politique similaire à ce qui suit dans une politique IAM :
Allow any-user to use ons-topics in compartment <destination-topic-compartment-ocid> where all {request.principal.type= 'fnapp', request.principal.compartment.id='<compartment-ocid>'} - Pour permettre au service des fonctions pour OCI d'écrire les résultats des appels détachés vers les destinations de réussite et d'échec du service de file d'attente, incluez un énoncé de politique similaire à ce qui suit dans une politique IAM :
Allow any-user to use queues in compartment <destination-queue-compartment-ocid> where all {request.principal.type= 'fnapp', target.queue.id='<queue-ocid>', request.principal.compartment.id='<compartment-ocid>'} - Pour permettre au service des fonctions pour OCI d'écrire les résultats des appels détachés vers les destinations de réussite et d'échec du service de diffusion en continu, incluez un énoncé de politique similaire à ce qui suit dans une politique IAM :
Allow any-user to use streams in compartment <destination-stream-compartment-ocid> where all {request.principal.type= 'fnapp', target.stream.id='<stream-ocid>', request.principal.compartment.id='<compartment-ocid>'}
Appel de fonctions en mode détaché
Après avoir réglé la propriété Temporisation d'appel détaché (detachedModeTimeoutInSeconds) d'une fonction à la temporisation d'exécution de la fonction requise et avoir éventuellement fourni des destinations de réussite et d'échec pour les résultats d'appel (ainsi que des énoncés de politique appropriés pour permettre au service des fonctions pour OCI d'accéder à ces destinations), vous êtes prêt à appeler la fonction et à spécifier Détaché comme type d'appel.
Par exemple :
-
Pour appeler une fonction en mode détaché à l'aide de l'interface de ligne de commande OCI
fn function invoke, entrez une commande similaire à la suivante :oci fn function invoke --function-id <function-ocid> --file "-" --body '{"name": "ABC"}' --fn-invoke-type detached -
Pour appeler une fonction en mode détaché à l'aide de la commande
raw-requestde l'interface de ligne de commande OCI, entrez une commande similaire à la suivante :oci raw-request --http-method POST --target-uri <invoke-endpoint> --request-body '{"name": "ABC"}' --request-headers '{"fn-invoke-type" : "detached"}'
Transmission des résultats d'appel détachés
Si vous avez fourni des destinations de réussite et d'échec pour les résultats des appels détachés d'une fonction (et que vous avez créé des énoncés de politique appropriés pour permettre au service des fonctions pour OCI d'accéder à ces destinations), le service des fonctions pour OCI offre les avantages suivants :
- Enregistrement d'appel vers la destination de réussite lorsqu'un appel détaché réussit.
- Enregistrement d'appel vers la destination d'échec lorsqu'un appel détaché échoue.
Exemple d'enregistrement d'appel pour un appel réussi :
{
"id": "01K1Q6K12C1BT01KRZJ000HKB9",
"version": "1.0",
"data": {
"compartmentId": "ocid1.compartment.oc1..aaaaaaaa______jf4a",
"functionId": "...",
"applicationId": "...",
"request": {
"opcRequestId": "...",
"fnCallId": "..."
},
"response": {
"status": "200",
"errorCode": null,
"errorMessage": null,
"timestamp": "2025-08-03T05:31:21.392988237Z"
}
}
}
Exemple d'enregistrement d'appel pour un appel ayant échoué :
{
"id": "01J6BS40ZC000000000000H7Z0",
"version": "1.0",
"data":
{
"compartmentId": "ocid1.compartment.oc1..aaaaaaaa______jf4a",
"functionId": "...",
"applicationId": "...",
"request": {
"opcRequestId": "...",
"fnCallId": "..."
},
"response": {
"status": "502",
"errorCode": "FunctionInvokeExecutionFailed",
"errorMessage": "function failed",
"timestamp": "2024-08-11T21:47:41.264Z"
}
}
}
OCI Functions fournit les enregistrements d'appel dans le format attendu par la destination.
Si le service des fonctions pour OCI ne peut pas transmettre un enregistrement d'appel à sa destination (par exemple, en raison d'autorisations manquantes), vous pouvez utiliser des journaux et des mesures pour suivre les échecs de transmission.
Surveillance et mesures
Pour différencier les types d'appel Sync et Detached, les mesures FunctionExecutionDuration, FunctionInvocationCount et FunctionResponseCount incluent la dimension InvokeType.
Pour suivre les livraisons réussies et en échec des enregistrements d'appel vers les destinations, utilisez la mesure FunctionDetachedDeliveries.
Pour plus d'informations sur les mesures du service des fonctions pour OCI, voir Mesures de fonction.
Conseils pour résoudre les problèmes liés aux appels détachés
Si vous rencontrez des problèmes avec des appels détachés ou si les enregistrements d'appel ne sont pas fournis :
- Vérifiez que les autorisations IAM nécessaires existent pour accorder au service des fonctions pour OCI l'accès à la destination cible (voir Création de politiques IAM pour la réussite de l'appel détaché et les destinations d'échec).
- Utilisez le service de journalisation OCI pour vérifier les messages d'échec. Si le service des fonctions pour OCI n'a pas pu transmettre un enregistrement d'appel à une destination cible, il inclut le motif dans les journaux d'appel du service de journalisation pour OCI. L'entrée de journal commence
Invocation record delivery to failure destination failed due to - ...(voir Stockage et consultation des journaux de fonction). - Utilisez la mesure
FunctionDetachedDeliveriespour vérifier les détails et les erreurs de transmission (voir Mesures de fonction). Pour les diffusions en échec vers les destinations cibles, la dimensionresponseTypede la mesure contient une erreur et la dimension errorMessage contient la cause de l'erreur.