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 :
- Les fonctions sans serveur référencées dans la spécification du déploiement d'API doivent déjà avoir été créées et déployées dans OCI Functions. Les fonctions doivent pouvoir être acheminées à partir du réseau cloud virtuel spécifié pour la passerelle d'API, que ce soit via une passerelle Internet (dans le cas d'une passerelle d'API publique) ou via une passerelle de service (dans le cas d'une passerelle d'API privée). Les fonctions doivent utiliser des codes de statut HTTP conformes à la norme RFC pour communiquer le statut. Reportez-vous à Création et déploiement de fonctions. Pour consulter un tutoriel de développeur connexe, reportez-vous à Functions : appel d'une fonction avec API Gateway.
Vous devez déjà exister des stratégies appropriées qui donnent accès aux fonctions sans serveur définies dans OCI Functions pour :
- un groupe auquel votre compte utilisateur appartient (reportez-vous à Création d'une stratégie pour permettre aux utilisateurs d'API Gateway d'accéder aux fonctions),
- des passerelles d'API (reportez-vous à Création d'une stratégie pour permettre aux passerelles d'API d'accéder aux fonctions).
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' :
- Vérifiez que vous avez bien effectué les étapes préalables pour utiliser OCI Functions, comme décrit dans Préparation pour Functions.
- Créer et déployer la fonction dans un compartiment auquel les passerelles d'API ont accès, comme décrit dans Création et déploiement de fonctions.
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 :
-
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.
-
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.
-
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 :
- Il doit être relatif au préfixe de chemin de déploiement (reportez-vous à Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API).
- Il doit être précédé d'une barre oblique (/). Il peut également consister en une unique barre oblique.
- Il peut contenir plusieurs barres obliques (à condition qu'elles ne soient pas adjacentes), ainsi que se terminer par une barre oblique.
- Il peut inclure des caractères alphanumériques en majuscules et minuscules.
- Il peut inclure les caractères spéciaux
$ - _ . + ! * ' ( ) , % ; : @ & =
. - Il peut inclure des paramètres et des caractères génériques (reportez-vous à Ajout de paramètres de chemin et de caractères génériques aux chemins de routage).
- 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
-
- (Facultatif) Sélectionnez Autre routage pour saisir les détails d'autres routages.
- Sélectionnez Suivant afin de vérifier les détails saisis pour le déploiement d'API.
- Sélectionnez Créer ou Enregistrer les modifications pour créer ou mettre à jour le déploiement d'API.
-
(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 :
-
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 sectionroutes
. Pour appliquer les stratégies uniquement à un routage spécifique, placez les stratégies dans la sectionroutes
. 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 :- Il doit être relatif au préfixe de chemin de déploiement (reportez-vous à Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API).
- Il doit être précédé d'une barre oblique (/). Il peut également consister en une unique barre oblique.
- Il peut contenir plusieurs barres obliques (à condition qu'elles ne soient pas adjacentes), ainsi que se terminer par une barre oblique.
- Il peut inclure des caractères alphanumériques en majuscules et minuscules.
- Il peut inclure les caractères spéciaux
$ - _ . + ! * ' ( ) , % ; : @ & =
. - Il peut inclure des paramètres et des caractères génériques (reportez-vous à Ajout de paramètres de chemin et de caractères génériques aux chemins de routage).
<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" } } ] }
- Enregistrez le fichier JSON qui contient la spécification de déploiement d'API.
-
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.
-
(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"