Ajout d'une fonction dans OCI Functions en tant que back-end de passerelle d'API

Découvrez comment créer un déploiement d'API avec API Gateway qui expose les fonctions sans serveur définies dans OCI Functions.

Il est souvent nécessaire de créer une API avec des fonctions sans serveur en tant que back-end avec une passerelle d'API qui fournit un accès frontal à ces fonctions.

OCI Functions vous permet de créer des fonctions sans serveur, qui sont conçues en tant qu'images Docker et propagées vers le registre Docker spécifié. Une définition de chaque fonction est stockée sous forme de métadonnées dans le serveur OCI Functions. Lorsqu'une fonction est appelée pour la première fois, OCI Functions extrait l'image Docker de la fonction du registre Docker spécifié, l'exécute en tant que conteneur Docker et exécute la fonction. En cas de demandes ultérieures adressées à la même fonction, OCI Functions dirige ces demandes vers le même conteneur en cours d'exécution. Après une période d'inactivité, le conteneur Docker est arrêté.

Après avoir utilisé le service API Gateway pour créer une passerelle d'API, vous pouvez créer un déploiement d'API qui appelle des fonctions sans serveur définies dans OCI Functions.

Pour que vous puissiez utiliser des fonctions sans serveur dans OCI Functions en tant que back-end pour une API, procédez comme suit :

Vous pouvez ajouter des back-ends de fonction sans serveur à une spécification de déploiement d'API en :

  • utilisant la console,
  • modifiant un fichier JSON.

Création et déploiement d'une fonction sans serveur dans OCI Functions pour l'utiliser en tant que back-end de passerelle d'API

Pour créer une fonction sans serveur dans OCI Functions qui peut être appelée à partir d'une passerelle d'API, suivez les instructions de la documentation OCI Functions afin d' :

Utilisation de la console pour ajouter des back-ends de fonction sans serveur à une spécification de déploiement d'API

Pour ajouter un back-end de fonction OCI Functions à une spécification de déploiement d'API à l'aide de la console, procédez comme suit :

  1. Créez ou mettez à jour un déploiement d'API à l'aide de la console, sélectionnez l'option Entièrement nouveau, puis saisissez les détails sur la page Informations de base.

    Pour plus d'informations, reportez-vous à Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API et à Mise à jour d'une passerelle d'API.

  2. Sur la page Authentification, indiquez les options d'authentification.

    Pour plus d'informations sur les options d'authentification, reportez-vous à Ajout de l'authentification et de l'autorisation aux déploiements d'API.

  3. Sur la page Routages, créez un routage et spécifiez les éléments suivants :

    • Chemin : chemin pour les appels d'API utilisant les méthodes répertoriées vers le service back-end. Le chemin d'accès que vous spécifiez doit remplir les conditions suivantes :

    • Méthodes : méthodes acceptées par le service back-end. Par exemple, GET, PUT.
    • Ajouter un seul back-end : ou Ajouter plusieurs back-ends : indique si toutes les demandes doivent être acheminées vers le même back-end ou si elles doivent l'être vers d'autres back-ends en fonction de la variable de contexte et des règles que vous entrez.

      Ces instructions supposent que vous souhaitez utiliser un back-end unique. Sélectionnez donc Ajouter un back-end unique. Si vous souhaitez utiliser des back-ends différents, vous pouvez également sélectionner Ajouter plusieurs back-ends et suivre les instructions fournies dans Utilisation de la console pour ajouter une sélection de back-end dynamique à une spécification de déploiement d'API.

    • Type de back-end : type du service back-end (Oracle Functions).
    • Application dans <name> : nom de l'application dans OCI Functions qui contient la fonction. Vous pouvez sélectionner une application dans un autre compartiment.
    • Nom de fonction : nom de la fonction dans OCI Functions.

    Dans cet exemple, le routage définit une fonction simple Hello World sans serveur dans OCI Functions en tant que back-end unique.

    Champ : Saisissez ce qui suit :
    Chemin : /hello
    Méthodes : GET
    Type de back-end: Oracle Functions
    Application dans <nom-compartiment> : acmeapp
    Nom de fonction : acme-func
  4. (Facultatif) Sélectionnez Autre routage pour saisir les détails d'autres routages.
  5. Sélectionnez Suivant afin de vérifier les détails saisis pour le déploiement d'API.
  6. Sélectionnez Créer ou Enregistrer les modifications pour créer ou mettre à jour le déploiement d'API.
  7. (Facultatif) Vérifiez que l'API a été déployée en l'appelant (reportez-vous à Appel d'une API déployée sur une passerelle d'API).

    Si la fonction sans serveur accepte des paramètres, incluez-les dans l'appel à l'API. Par exemple :

    curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"

Modification d'un fichier JSON pour ajouter des back-ends de fonction sans serveur à une spécification de déploiement d'API

Pour ajouter un back-end de fonction OCI Functions à une spécification de déploiement d'API dans un fichier JSON, procédez comme suit :

  1. A l'aide de l'éditeur JSON de votre choix, créez la spécification de déploiement d'API dans un fichier JSON au format suivant :

    {
      "requestPolicies": {},
      "routes": [
        {
          "path": "<api-route-path>",
          "methods": ["<method-list>"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "<identifier>"
          },
          "requestPolicies": {}
        }
      ]
    }

    où :

    • "requestPolicies" indique des stratégies facultatives permettant de contrôler le comportement d'un déploiement d'API. Pour appliquer des stratégies à tous les routages dans une spécification de déploiement d'API, placez les stratégies en dehors de la section routes. Pour appliquer les stratégies uniquement à un routage spécifique, placez les stratégies dans la section routes. Reportez-vous à Ajout de stratégies de demande et de réponse aux spécifications de déploiement d'API.
    • <api-route-path> spécifie un chemin pour les appels d'API utilisant les méthodes répertoriées vers le service back-end. Le chemin d'accès que vous spécifiez doit remplir les conditions suivantes :

    • <method-list> indique les méthodes acceptées par le service back-end, séparées par des virgules. Par exemple, "GET, PUT".
    • <identifier> spécifie l'OCID de la fonction à utiliser en tant que service back-end. Par exemple, "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq".

    Par exemple, la spécification de déploiement d'API de base suivante définit une fonction simple sans serveur Hello World dans OCI Functions en tant que back-end unique :

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Enregistrez le fichier JSON qui contient la spécification de déploiement d'API.
  3. Utilisez la spécification de déploiement d'API lorsque vous créez ou mettez à jour un déploiement d'API en :

    • spécifiant le fichier JSON dans la console lorsque vous sélectionnez l'option Télécharger une API existante,
    • spécifiant le fichier JSON dans une demande adressée à l'API REST d'API Gateway.

    Pour plus d'informations, reportez-vous à Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API.

  4. (Facultatif) Assurez-vous que l'API a été déployée et que la fonction sans serveur dans OCI Functions peut être appelée en appelant l'API (reportez-vous à Appel d'une API déployée sur une passerelle d'API).

    Si la fonction sans serveur accepte des paramètres, incluez-les dans l'appel à l'API. Par exemple :

    curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"