Appel de fonctions

Découvrez les différentes façons d'appeler des fonctions déployées vers OCI Functions.

Vous pouvez appeler une fonction déployée vers OCI Functions de différentes manières :

  • Utilisation de l'interface de ligne de commande du projet Fn
  • Utilisation de l'interface de ligne de commande d'Oracle Cloud Infrastructure
  • Utilisation des kits SDK d'Oracle Cloud Infrastructure
  • Demande HTTP signée envoyée à l'adresse d'appel de la fonction. Chaque fonction possède une adresse d'appel.

Chacune des actions ci-dessus appelle la fonction via des demandes envoyées à l'API. Toute demande destinée à l'API doit être authentifiée par une signature et l'OCID du compartiment auquel la fonction appartient dans l'en-tête de la demande. Une telle demande est appelée demande "signée". La signature inclut les informations d'identification Oracle Cloud Infrastructure dans un format crypté.

Si vous utilisez l'interface de ligne de commande du projet Fn ou d'Oracle Cloud Infrastructure pour appeler une fonction, l'authentification est gérée automatiquement. Reportez-vous à Utilisation de l'interface de ligne de commande du projet Fn pour appeler des fonctions et à Utilisation de l'interface de ligne de commande d'Oracle Cloud Infrastructure pour appeler des fonctions.

Si vous utilisez un kit SDK d'Oracle Cloud Infrastructure pour appeler une fonction, vous pouvez vous servir du kit pour gérer l'authentification. Reportez-vous à Utilisation des kits SDK pour appeler des fonctions.

Si vous envoyez une demande HTTP signée à l'adresse d'appel d'une fonction, vous devez gérer votre authentification en incluant une signature et l'OCID du compartiment auquel la fonction appartient dans l'en-tête de la demande. Pour cela, vous disposez de plusieurs méthodes :

Notez que la façon dont vous appelez une fonction et le type d'appel que vous indiquez déterminent la durée maximale d'exécution de la fonction et d'autres comportements d'exécution.

Conseil

Si vous ne pouvez pas effectuer l'une des étapes de cette rubrique, consultez les solutions aux problèmes courants (reportez-vous à Dépannage des fonctions OCI).

Types d'appel synchrones et détachés

Lorsque vous appelez une fonction, vous pouvez indiquer un type pour l'appel de la fonction. Le type d'appel de fonction détermine la responsabilité de la gestion des résultats, lorsque le contrôle est renvoyé à l'appelant et le code de statut HTTP renvoyé, comme suit :

  • Synchronisation : si vous indiquez Sync comme type d'appel de fonction (valeur par défaut), OCI Functions exécute la demande de manière synchrone. Une fois l'opération terminée, OCI Functions émet un code de statut HTTP 200 et renvoie le résultat à l'appelant, ainsi que le contrôle.
  • Détaché : si vous indiquez 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 renvoie le contrôle à l'appelant. La fonction elle-même est responsable de la gestion des résultats.

La spécification de Sync en tant que type d'appel de fonction est également appelée appel de la fonction en mode Sync ou appel synchrone. La spécification de Détaché comme type d'appel de fonction est également appelée appel de la fonction en mode Détaché ou appel détaché.

L'appel détaché peut être préférable à l'appel synchrone pour les fonctions qui prennent beaucoup de temps à s'exécuter, car l'appel détaché prend en charge un délai d'expiration d'exécution plus long et prend également en charge des options de configuration supplémentaires pour les destinations de distribution après exécution (reportez-vous à Appel de fonctions en mode détaché). Les avantages de l'appel détaché sont généralement très utiles pour les fonctions que vous planifiez pour une exécution sur une planification récurrente. Par conséquent, les fonctions que vous planifiez sont toujours appelées avec le type d'appel Détaché (reportez-vous à la section Fonctions de planification).

Pour indiquer le type d'appel de la fonction :

  • Lorsque vous appelez une fonction à l'aide de la commande fn function invoke de 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"
  • Lorsque vous appelez une fonction à partir d'une autre fonction à l'aide de l'un des kits FDK, indiquez le type d'appel dans l'appel de fonction. Par exemple, en utilisant Python FDK :
    resp = client.invoke_function(function_id=function_ocid, invoke_function_body=function_body, fn_invoke_type='detached')
  • Lorsque vous appelez une fonction à l'aide de la commande raw-request de 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"}'

Délai d'expiration de fonction, délai d'expiration d'appel de fonction et délai d'expiration d'exécution de fonction

Le délai d'expiration de la fonction peut être défini plus précisément comme suit :

  • Délai d'expiration de l'appel de fonction, qui fait référence à la durée pendant laquelle un client appelant une fonction attend une réponse de la fonction avant d'abandonner.
  • Délai d'expiration de l'exécution de fonction, qui fait référence à la durée pendant laquelle OCI Functions autorise l'exécution d'une fonction, avant de mettre fin à l'exécution.

Lorsque vous appelez une fonction avec Sync comme type d'appel, le délai d'expiration de l'appel de la fonction et le délai d'expiration de l'exécution de la fonction sont identiques. Toutefois, lorsque vous appelez une fonction dont le type d'appel est Détaché, le paramètre Délai d'expiration de l'appel détaché (detachedModeTimeoutInSeconds) contrôle le délai d'expiration de l'exécution de la fonction et est distinct du délai d'expiration de l'appel de la fonction.

La façon dont vous appelez une fonction et le type d'appel que vous indiquez déterminent la durée maximale pendant laquelle la fonction peut s'exécuter, comme suit :

  • Si vous appelez une fonction à l'aide de l'interface de ligne de commande du projet Fn (avec Sync comme type d'appel), le paramètre Délai d'expiration de l'appel synchrone (timeoutInSeconds) que vous spécifiez dans la définition de la fonction est appliqué (la valeur par défaut est 30 secondes). Reportez-vous à la section Changing Default Memory and Timeout Settings.
  • Si vous appelez une fonction à l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure (avec Sync comme type d'appel), la valeur du paramètre global --read-timeout de l'interface de ligne de commande OCI est appliquée (la valeur par défaut est de 60 secondes). Reportez-vous à oci fn function invoke.
  • Si vous appelez une fonction à l'aide des kits SDK Oracle Cloud Infrastructure (avec Sync comme type d'appel), le délai d'expiration de lecture indiqué pour le client est appliqué. Par exemple, reportez-vous à la documentation relative au kit SDK Java et au kit SDK Python.
  • Si vous appelez une fonction à l'aide du kit SDK PL/SQL, la valeur de UTL_HTTP.set_transfer_timeout est appliquée (la valeur par défaut est de 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_timeout est appliquée (60 secondes par défaut).
  • Si vous appelez une fonction avec le type d'appel Détaché, le paramètre Délai d'expiration de l'appel Détaché (detachedModeTimeoutInSeconds) que vous indiquez 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 que le paramètre Délai d'expiration de l'appel détaché (detachedModeTimeoutInSeconds) n'est pas défini, la valeur du paramètre Délai d'expiration de l'appel synchrone (timeoutInSeconds) est appliquée. Reportez-vous à Appel de fonctions en mode détaché.

Utilisation de l'interface de ligne de commande du projet Fn pour appeler des fonctions

Pour appeler une fonction déployée vers OCI Functions à l'aide de l'interface de ligne de commande du projet Fn, procédez comme suit :

  1. Connectez-vous à votre environnement de développement en tant que développeur de fonctions.

  2. Dans une fenêtre de terminal, saisissez la commande suivante :

    fn invoke <app-name> <function-name>

    où :

    • <app-name> représente le nom de l'application contenant la fonction à appeler.
    • <function-name> représente le nom de la fonction à appeler.

    Par exemple :

    fn invoke helloworld-app helloworld-func

    Sortie :

    Hello World !
    Conseil

    Pour transmettre des arguments et des valeurs à une fonction, ajoutez le préfixe echo -n '<argument>=<value>' | à la commande fn invoke

    Si la fonction attend l'argument et la valeur au format JSON, utilisez un format JSON valide. Par exemple :

    echo -n '{"name":"John"}' | fn invoke helloworld-app helloworld-func

    Sortie :

    Hello John !

Utilisation de l'interface de ligne de commande d'Oracle Cloud Infrastructure pour appeler des fonctions

Si vous avez installé l'interface de ligne de commande d'Oracle Cloud Infrastructure, vous pouvez l'utiliser afin d'envoyer des demandes d'API pour appeler des fonctions. Entre autres, l'interface de ligne de commande d'Oracle Cloud Infrastructure facilitera l'authentification Oracle Cloud Infrastructure. Pour plus d'informations sur l'utilisation de l'interface de ligne de commande d'Oracle Cloud Infrastructure, reportez-vous à Interface de ligne de commande (CLI).

Ces instructions sont basées sur les principes suivants :

  • Vous avez déjà installé et configuré l'interface de ligne de commande d'Oracle Cloud Infrastructure.
  • Vous voulez appeler une fonction en tant que développeur de fonctions configuré pour votre environnement de développement.

Pour appeler une fonction à l'aide de l'interface de ligne de commande d'Oracle Cloud Infrastructure, procédez comme suit :

  1. Connectez-vous à votre environnement de développement en tant que développeur de fonctions.

  2. Dans une fenêtre de terminal, saisissez la commande suivante :

    oci fn function invoke --function-id <function-ocid> --file "<output-filepath>" --body "<request-parameters>"

    où :

    • <function-ocid> représente l'OCID de la fonction que vous voulez appeler. Pour identifier l'OCID d'une fonction, utilisez la commande fn inspect afin de voir la valeur de la propriété id de la fonction (reportez-vous à Liste de fonctions).
    • <output-filepath> représente le chemin et le nom d'un fichier dans lequel écrire la réponse. Pour écrire la réponse vers stdout, indiquez --file "-".
    • <request-parameters> sont des arguments et des valeurs à transmettre à la fonction de manière facultative. Si la fonction attend des arguments et des valeurs au format JSON, utilisez un format JSON valide. Par exemple : --body '{"name":"John"}'. Vous devez inclure --body "" dans la demande, même s'il n'existe 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 des kits SDK pour appeler des fonctions

Si vous écrivez un programme pour appeler une fonction dans un langage pour lequel il existe un kit SDK Oracle Cloud Infrastructure, nous vous recommandons d'utiliser ce kit SDK pour envoyer des demandes d'API. Entre autres, le kit SDK facilitera l'authentification Oracle Cloud Infrastructure.

Lorsque vous utilisez un kit SDK pour appeler une fonction, vous n'indiquez pas l'intégralité de l'adresse d'appel que vous indiquez lors de l'utilisation de la commande raw-request de l'interface de ligne de commande d'Oracle Cloud Infrastructure (reportez-vous à Obtention de l'adresse d'appel d'une fonction). A la place, indiquez uniquement la première partie de l'adresse d'appel de la fonction. Par exemple, lorsque vous utilisez un kit SDK, n'indiquez pas l'adresse d'appel de la fonction en tant que https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke. A la place, indiquez l'adresse d'appel de la fonction en tant que https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com.

Pour plus d'informations sur l'utilisation de l'API et la signature des demandes, reportez-vous à la documentation relative à l'API REST et à Informations d'identification de sécurité. Pour plus d'informations sur les kits SDK, reportez-vous à Kits SDK et interface de ligne de commande.

Utilisez l'opération d'API InvokeFunction pour appeler des fonctions.

Obtention de l'adresse d'appel d'une fonction

Lors de l'appel d'une fonction à l'aide de la commande raw-request de l'interface de ligne de commande d'Oracle Cloud Infrastructure, vous devez indiquer l'adresse d'appel de la fonction.

Pour obtenir l'adresse d'appel d'une fonction, procédez comme suit :

  1. Connectez-vous à votre environnement de développement en tant que développeur de fonctions.

  2. Dans une fenêtre de terminal, saisissez la commande suivante :

    fn inspect function <app-name> <function-name>

    où :

    • <app-name> représente le nom de l'application contenant la fonction pour laquelle vous voulez obtenir l'adresse d'appel.
    • <function-name> représente le nom de la fonction pour laquelle vous voulez obtenir l'adresse d'appel.

    Par exemple :

    fn inspect function helloworld-app helloworld-func

    Sortie :

    {
       "annotations": {
    		"fnproject.io/fn/invokeEndpoint": "https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke",
    
    ...
    }

    L'adresse 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ée pour des raisons de de lisibilité).

Envoi d'une demande signée à une adresse d'appel de fonction (à l'aide de la commande raw-request de l'interface de ligne de commande d'Oracle Cloud Infrastructure)

Si vous avez installé l'interface de ligne de commande d'Oracle Cloud Infrastructure, vous pouvez l'utiliser afin d'envoyer des demandes d'API pour appeler des fonctions. Entre autres, l'interface de ligne de commande facilitera l'authentification Oracle Cloud Infrastructure. Pour plus d'informations sur l'utilisation de l'interface de ligne de commande Oracle Cloud Infrastructure, reportez-vous à Interface de ligne de commande (CLI).

Ces instructions sont basées sur les principes suivants :

  • Vous avez déjà installé et configuré l'interface de ligne de commande d'Oracle Cloud Infrastructure.
  • Vous voulez appeler une fonction en tant que développeur de fonctions configuré pour votre environnement de développement.

Pour appeler une fonction déployée vers OCI Functions en envoyant une demande signée à l'adresse d'appel de la fonction à l'aide de la commande raw-request de l'interface de ligne de commande d'Oracle Cloud Infrastructure, procédez comme suit :

  1. Connectez-vous à votre environnement de développement en tant que développeur de fonctions.

  2. Obtenez l'adresse d'appel de la fonction (reportez-vous à Obtention de l'adresse 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ée pour des raisons de lisibilité).

  3. Utilisez la commande raw-request de l'interface de ligne de commande d'Oracle Cloud Infrastructure pour appeler la fonction en envoyant une demande POST signée à l'adresse d'appel de la fonction en saisissant la commande suivante :

    oci raw-request --http-method POST --target-uri <invoke-endpoint> --request-body "<request-parameters>"

    où :

    • <invoke-endpoint> représente l'adresse obtenue à l'étape précédente.
    • <request-parameters> sont des arguments et des valeurs à transmettre à la fonction de manière facultative. Si la fonction attend des arguments et des valeurs au format JSON, utilisez un format JSON valide. Vous devez inclure --request-body "" dans la demande, même s'il n'existe 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 !
  4. Si une phrase de passe a été fournie pour crypter la clé de signature de l'API, entrez la phrase de passe à l'invite.

Appel de fonctions en mode Détaché

Appelez une fonction dont le type d'appel est Détaché lorsque :

  • Vous voulez appeler une fonction qui prend beaucoup de temps.
  • Vous souhaitez que la fonction s'exécute de manière asynchrone, afin 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 indiquer les destinations vers lesquelles envoyer les résultats des appels réussis et des appels ayant échoué.

L'appel détaché permet aux charges globales à longue durée d'exécution (telles que les tâches ETL volumineuses, les travaux AI/ML et les intégrations) de se terminer sans être contraintes par le délai d'expiration de l'appel synchrone.

Indiquer le délai d'expiration et les destinations des 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 (detachedModeTimeoutInSeconds) pour indiquer le délai d'expiration de l'exécution de la fonction pour les appels détachés
  • la destination de réussite et la destination de défaillance (respectivement successDestination et failureDestination), pour indiquer les destinations vers lesquelles envoyer les résultats des appels détachés. Notez que les destinations de succès et d'échec s'appliquent uniquement aux appels détachés. Si vous indiquez une destination de réussite et/ou d'échec, OCI Functions fournit :
    • Enregistrement d'appel vers la destination de succès 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 Notifications, le service Queue et le service Streaming. Pour écrire dans le service de destination, OCI Functions requiert des droits d'accès de stratégie IAM (reportez-vous à Création de stratégies IAM pour les destinations d'échec et de succès d'appel détaché).

Vous pouvez utiliser la console, l'interface de ligne de commande OCI et l'API pour indiquer le délai d'expiration 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 le type d'appel Détaché, s'exécute jusqu'à 1800 secondes avant l'expiration, et pour laquelle les résultats des appels réussis et des appels ayant échoué sont envoyés vers les destinations indiqué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.json contient la chaîne JSON suivante :
    {"kind": "STREAM", "streamId": "ocid1.stream.oc1...."}
  • failure-dest.json contient la chaîne JSON suivante :
    {"kind": "QUEUE", "queueId": "ocid1.queue.oc1....", "channelId": "failure1234"}

Reportez-vous à SuccessDestinationDetails et à FailureDestinationDetails dans la documentation d'API pour connaître les attributs à indiquer pour les différents services de destination.

Création de stratégies IAM pour les destinations d'échec et de succès d'appel détaché

OCI Functions requiert des droits d'accès IAM pour écrire les résultats des appels détachés vers les destinations de réussite et d'échec que vous indiquez dans les définitions de fonction. Le service Notifications, le service Streaming et le service Queue sont des destinations de réussite et d'échec prises en charge. Si les droits d'accès n'existent pas déjà, vous devez créer les stratégies IAM appropriées qui incluent les instructions de stratégie nécessaires.

Par exemple :

  • Pour permettre à OCI Functions d'écrire les résultats des appels détachés vers les destinations de réussite et d'échec dans le service Notifications, incluez une instruction de stratégie similaire à la suivante dans une stratégie 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 à OCI Functions d'écrire les résultats des appels détachés vers les destinations de succès et d'échec dans le service Queue, incluez une instruction de stratégie similaire à la suivante dans une stratégie 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 à OCI Functions d'écrire les résultats des appels détachés vers les destinations de réussite et d'échec dans le service Streaming, incluez une instruction de stratégie similaire à la suivante dans une stratégie 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é

Une fois que vous avez défini la propriété Délai d'expiration d'appel détaché (detachedModeTimeoutInSeconds) d'une fonction sur le délai d'expiration d'exécution de fonction requis, et que vous avez éventuellement fourni des destinations de succès et d'échec pour les résultats d'appel (ainsi que des instructions de stratégie appropriées pour permettre à OCI Functions d'accéder à ces destinations), vous êtes prêt à appeler la fonction et à indiquer 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-request de 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é

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 créé des instructions de stratégie appropriées pour permettre à OCI Functions d'accéder à ces destinations), OCI Functions fournit :

  • Enregistrement d'appel vers la destination de succès 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 l'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 des enregistrements d'appel au format attendu par la destination.

Si OCI Functions ne peut pas transmettre un enregistrement d'appel à sa destination (par exemple, en raison de droits d'accès manquants), vous pouvez utiliser des journaux et des mesures pour suivre les échecs de distribution.

Surveillance et mesures

Pour différencier les types d'appel Sync et Détaché, les mesures FunctionExecutionDuration, FunctionInvocationCount et FunctionResponseCount incluent la dimension InvokeType.

Pour suivre les livraisons des enregistrements d'appel vers les destinations qui ont réussi ou échoué, utilisez la mesure FunctionDetachedDeliveries.

Pour plus d'informations sur les mesures OCI Functions, reportez-vous à 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 à nouveau que les droits d'accès IAM nécessaires permettent d'accorder à OCI Functions l'accès à la destination cible (reportez-vous à Création de stratégies IAM pour les destinations d'échec et de succès d'appel détaché).
  • Utilisez le service OCI Logging pour vérifier les messages d'échec. Si OCI Functions n'a pas pu transmettre un enregistrement d'appel à une destination cible, il inclut le motif dans les journaux d'appel dans OCI Logging. L'entrée de journal commence par Invocation record delivery to failure destination failed due to - ... (reportez-vous à la section Stockage et affichage des journaux de fonction).
  • Utilisez la mesure FunctionDetachedDeliveries pour vérifier les détails de livraison et les erreurs (reportez-vous à Mesures de fonction). Pour les livraisons ayant échoué vers les destinations cible, la dimension responseType de la mesure contient Erreur et la dimension errorMessage contient la cause de l'erreur.