Remarques :

Utiliser OCI API Gateway, Functions and Observability pour valider le contenu JSON et surveiller les en-têtes et le corps d'API

Introduction

Lorsque nous développons des applications distribuées, en particulier dans des architectures basées sur des microservices, nous voulons des composants qui évoluent et fonctionnent bien dans leur exécution. Ils ont des architectures très complexes, des composants qui exécutent d'autres composants, qui exécutent d'autres composants, etc., dans un nombre infini d'appels.

Planifier comment développer chacun d'eux est une tâche énorme. Vous pouvez exposer vos microservices basés sur un cluster Kubernetes via Oracle Cloud Infrastructure API Gateway (OCI API Gateway). Il existe une série d'installations, telles que l'authentification et l'autorisation des appels, la validation des données et l'optimisation des appels, pour n'en nommer que quelques-unes. Il est également possible d'exécuter des appels avec OCI Functions dans le but de créer des mécanismes d'authentification et d'autorisation personnalisés, lorsque les méthodes existantes ne sont pas suffisantes pour résoudre le besoin.

Ce tutoriel explique comment utiliser le mécanisme personnalisé pour valider certains cas d'utilisation tels que :

Bien qu'il s'agisse d'un mécanisme d'authentification et d'autorisation dans OCI API Gateway, il peut répondre à d'autres besoins, tels que les suivants :

Objectifs

Prérequis

Tâche 1 : configurer OCI Observability

  1. Créez un journal dans votre location OCI pour inclure les journaux de votre fonction. Accédez à Observation et gestion et sélectionnez Journaux dans la console OCI.

    journalisation-1

  2. Cliquez sur Créer un journal personnalisé.

    journalisation-2

  3. Entrez un nom dans le champ Nom du journal personnalisé et choisissez un compartiment et un groupe de journaux appropriés.

    journalisation-3

Remarque : il est important de capturer l'OCID de votre journal. Vous en aurez besoin pour votre code.

journalisation-4

Tâche 2 : créer une fonction OCI pour capturer les EN-têtes et le corps à partir de la demande d'API

Pour exécuter les étapes suivantes, téléchargez le code à partir d'ici function.zip.

Comprendre le code

Ce code est disponible ici : function.zip.

Remarque : si vous ne savez pas comment développer une fonction et l'appeler dans API Gateway, reportez-vous à Appel d'une fonction à l'aide d'API Gateway.

Configuration de l'authentification du kit SDK vers OCI

Vous devez configurer le fichier de configuration et placer votre clé privée OCI et votre empreinte digitale avec votre fonction avant de le déployer vers OCI. Vous devez générer les fichiers config et private key sur l'installation et la configuration de l'interface de ligne de commande (CLI) Oracle Cloud Infrastructure.

Pour installer et configurer l'interface de ligne de commande OCI, reportez-vous à Installation de l'interface de ligne de commande OCI. Cette installation et cette configuration généreront deux fichiers pour vous. Recherchez le fichier config et private key (la valeur par défaut est oci_api_key.pem). Le chemin du dossier sera indiqué dans les instructions d'installation.

code-2

Téléchargez function.zip pour voir le code, le fichier de configuration et la clé privée. Remplacez les fichiers de configuration et de clé privée par vos fichiers d'interface de ligne de commande OCI.

Créer et déployer la fonction OCI

Cette étape consiste à utiliser l'interface de ligne de commande OCI pour créer les fonctions OCI et déployer du code dans votre location. Pour créer une fonction OCI, reportez-vous à OCI Functions QuickStart et recherchez l'option Python. Vous devrez créer votre fonction avec ces informations :

N'oubliez pas le compartiment dans lequel vous avez déployé la fonction. Vous aurez besoin de ces informations pour configurer votre déploiement OCI API Gateway.

Tâche 3 : configurer la fonction OCI dans API Gateway

Déployons votre API et intégrons-la à vos fonctions OCI pour valider et envoyer les paramètres de demande (en-tête et corps) à OCI Observability. Si vous ne savez pas comment exposer votre back-end dans OCI API Gateway, reportez-vous à OCI API Gateway : configuration, création et déploiement d'une API.

  1. Ouvrez Modifier le déploiement.

    config-apigw-1

  2. Cliquez sur la section Authentification.

    config-apigw-2

  3. Cliquez sur Authentification unique et sélectionnez Fonction d'autorisation.

    config-apigw-2a

  4. Choisissez votre compartiment de fonctions (où vous avez déployé la fonction), sélectionnez l'application fn_apigw_json et la fonction python-json-header.

    config-apigw-2b

  5. Configurez les arguments Functions pour capturer HEADER et BODY. Capturez le HEADER nommé header et header2, ainsi que le contenu BODY qui sera nommé body.

    config-apigw-2c

  6. Cliquez sur Routages et configurez la transformation d'en-tête. Cette configuration est facultative, uniquement pour afficher le contenu de la réponse avec les données de la demande (contenu HEADER et BODY) ou les erreurs générées sur la demande. Il sera utile de déboguer votre fonction.

    config-apigw-3

Tâche 4 : tester votre demande

Remarque : dans votre déploiement d'API, un cache pour les arguments Functions sera activé si vous configurez la fonction d'autorisation et les arguments Functions. Vous pouvez déterminer le type de données qui sera mis en mémoire cache. Vous pouvez configurer le cache pour le paramètre de requête ou l'en-tête, mais pas pour le contenu du corps.

Nous pouvons tester la demande d'API. Testons avec un seul élément sur un tableau dans le corps.

curl --location 'https://xxxxxxxxxxxxxxxxxxxx.apigateway.us-ashburn-1.oci.customer-oci.com/path_index/path' \
    --header 'Content-Type: text/plain' \
    --header 'header: header' \
    --header 'header2: header2' \
    --header 'header3: header3' \
    --data '{"data": {"clientID": "xxxxxxxxxxxxxxxxxxx", "secretID": "xxxxxxxxxxxxxxxxxxx", "jList":[{"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}]}}' -i

header3 a été envoyé mais affiché dans le journal car il n'a pas été configuré en tant qu'argument de fonction dans OCI API Gateway. Il n'y a qu'1 élément dans le tableau BODY JSON. Il s'agit donc d'une demande d'autorisation valide.

test-1

Mettons un élément de plus sur le tableau et testons-le.

curl --location 'https://xxxxxxxxxxxxxxxxxxxx.apigateway.us-ashburn-1.oci.customer-oci.com/path_index/path' \
--header 'Content-Type: text/plain' \
--header 'header: header' \
--header 'header2: header2' \
--header 'header3: header3' \
--data '{"data": {"clientID": "xxxxxxxxxxxxxxxxxxx", "secretID": "xxxxxxxxxxxxxxxxxxx", "jList":[{"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}, {"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}]}}' -i

test-2

Remerciements

Ressources de formation supplémentaires

Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.