Déploiement du package de composants vers un service

Vous pouvez héberger le package de composants personnalisé à partir d'un conteneur imbriqué Digital Assistant, d'Oracle Cloud Infrastructure Functions, de Mobile Hub ou d'un serveur Node.js externe.

Pour les services de composant imbriqués, déployez le package lorsque vous créez le service. Pour Oracle Cloud Infrastructure Functions, le serveur Node.js externe et les services Mobile Hub, vous devez d'abord déployer le package vers le service, comme décrit ici, avant de l'ajouter à une brique en tant que service de composant.

Déploiement vers un serveur Node.js

Pour héberger un package de composants personnalisé sur un serveur Node.js externe, utilisez l'interface de ligne de commande bots-node-sdk pack --service express pour copier les dossiers de votre package de composants et apporter quelques modifications propres à Express, puis installez le package de composants et démarrez-le sur votre serveur.

  1. Dans le dossier de niveau supérieur du package de composants personnalisé (celui qui contient le fichier main.js), saisissez cette commande dans une fenêtre de terminal :

    bots-node-sdk pack --service express

    Cette commande effectue les opérations suivantes :

    • Elle copie les fichiers et sous-dossiers dans service-express-<package version>.
    • Elle ajoute un wrapper de service index.js.
    • Elle crée un fichier api.js, qui est un wrapper d'Express pour main.js.
    • Elle modifie le fichier package.json pour définir le fichier principal sur index.js et ajouter les dépendances.

    Cette étape représente la commande d'interface de ligne de commande de base. Pour plus d'informations, reportez-vous à https://github.com/oracle/bots-node-sdk/blob/master/bin/CLI.md.

  2. Exécutez les commandes suivantes :

    npm install
    
    npm start

Déploiement vers Oracle Cloud Infrastructure Functions

Vous pouvez déployer vos composants personnalisés vers Oracle Cloud Infrastructure Functions.

Actuellement, Oracle Digital Assistant ne peut pas accéder aux gestionnaires d'événements d'entité dans les packages que vous déployez vers Oracle Cloud Infrastructure Functions.

Voici les étapes de haut niveau à suivre :

  1. Obtention des noms d'artefact et des droits d'accès pour le déploiement Oracle Cloud Infrastructure Functions

  2. Configuration de votre compte utilisateur pour Oracle Functions

  3. Configuration de votre ordinateur local pour Oracle Functions

  4. Modification du package de composants personnalisés pour Oracle Functions

  5. Déploiement des composants personnalisés vers Oracle Cloud Infrastructure Functions

Obtention des noms d'artefact et des droits d'accès pour le déploiement Oracle Cloud Infrastructure Functions

Pour pouvoir déployer des composants personnalisés vers Oracle Cloud Infrastructure Functions, vous devez obtenir les noms des artefacts utilisés pour le déploiement et vérifier que vous êtes autorisé à vous en utiliser.

Afin de configurer votre instance pour le déploiement Oracle Cloud Infrastructure Functions, l'administrateur de location a effectué les étapes décrites dans Configuration et stratégies pour Oracle Functions. Dans le cadre du processus, il a créé les artefacts suivants. Demandez leur nom à l'administrateur. Vous en avez besoin pour réaliser les étapes décrites dans Configuration de votre compte utilisateur pour Oracle Functions :

  • Noms de la région et du compartiment à utiliser pour vos fonctions.

  • Nom du compartiment pour le réseau virtuel de l'application de fonction. Il s'agit généralement du compartiment utilisé pour les fonctions.

  • Nom du réseau cloud virtuel à utiliser pour l'application de fonction.

De plus, demandez à l'administrateur de vérifier que vous appartenez à un groupe disposant des droits d'accès nécessaires aux développeurs de fonctions, qui incluent l'accès à ces artefacts.

Configuration de votre compte utilisateur pour Oracle Functions

Pour pouvoir déployer des packages de composants personnalisés vers Oracle Cloud Infrastructure Functions, vous devez effectuer les étapes suivantes dans la console Oracle Cloud Infrastructure :

Remarque

Vous devez connaître le nom des compartiments et du réseau virtuel (VCN) à utiliser et appartenir à un groupe qui permet le développement de fonctions, comme décrit dans Obtention des noms d'artefact et des droits d'accès pour le déploiement d'Oracle Cloud Infrastructure Functions.
  1. Connectez-vous à la console et, dans la barre supérieure, sélectionnez la région dans laquelle se trouve le compartiment de développement de fonctions.

  2. Vous allez effectuer le déploiement vers Oracle Cloud Infrastructure Functions via Oracle Cloud Infrastructure Registry. Si vous ne disposez pas encore d'un référentiel de registre que vous pouvez utiliser, procédez comme suit pour en créer un.

    1. Cliquez sur Icône de menu de navigation en haut à gauche pour ouvrir le menu de navigation. Cliquez sur Services de développeur, sur Registre du conteneur, puis, dans la section Portée de la liste, sélectionnez le compartiment configuré pour le développement de fonctions.

    2. Cliquez sur Créer un référentiel.

    3. Attribuez un nom au référentiel, puis cliquez sur Créer un référentiel.

  3. Si vous ne disposez d'aucune application de fonctions pour vos packages de composants personnalisés, vous devez en créer une. Sur la page Services de développeur, cliquez sur Fonctions, puis sur Créer une application. Indiquez un nom, sélectionnez un réseau cloud virtuel, sélectionnez au moins un sous-réseau, puis cliquez sur Créer.

    Si aucun réseau cloud virtuel n'apparaît pour faire votre choix, il se peut que vous ne vous trouviez pas dans la région appropriée.

    Le nombre d'applications et de fonctions est limité. Pour connaître les limites par défaut, reportez-vous à Limites de Functions dans la documentation Oracle Cloud Infrastructure .

  4. Sur la page Applications, cliquez sur l'application que vous utilisez pour le déploiement de fonctions, cliquez sur Mise en route dans la section Ressources, puis sur Configuration locale.

    Comme le montre la capture d'écran suivante, la page affiche plusieurs commandes que vous devrez utiliser pour configurer votre ordinateur local et pour déployer votre package de composants personnalisés. Copiez et enregistrez les commandes pour les étapes 3 à 7.

    Vous en aurez besoin ultérieurement après avoir installé le logiciel requis sur votre ordinateur local et une fois que vous serez prêt à déployer vos composants personnalisés. Vous pouvez également ajouter un signet pour cette page afin de pouvoir y revenir lorsque vous aurez besoin d'utiliser les commandes.

    N'exécutez pas ces commandes maintenant. Contentez-vous de les copier.


    Description de l'image fn-local-setup-commands.png ci-après
    Description de l'image fn-local-setup-commands.png

  5. Dans la commande copiée qui ressemble à ce qui suit, remplacez [OCIR-REPO] par le nom de votre référentiel de registre.

    fn update context registry phx.ocir.io/devdigital/[OCIR-REPO]
  6. Cliquez sur l'icône Profil dans l'angle supérieur droit, puis sur Paramètres d'utilisateur pour accéder à la page Détails de l'utilisateur.

  7. A l'étape suivante, vous allez créer un fichier PEM que vous devez stocker dans un dossier .oci sur votre ordinateur local. Si votre dossier de base sur l'ordinateur local ne comporte pas ce répertoire, créez-le à partir d'une fenêtre de terminal.

    • Linux et Mac :

      cd ~
      mkdir .oci
    • Windows :

      cd C:\Users\<your-user-name>
      mkdir .oci
  8. Vous avez besoin d'un fichier PEM public et privé pour un accès sécurisé. Si vous n'en avez pas encore configuré pour votre compte utilisateur, dans Détails de l'utilisateur dans la console, cliquez sur Clés d'API dans la section Ressources, puis sur Ajouter une clé d'API.

    Enregistrez le fichier de clés privées (fichier PEM) dans le répertoire .oci de votre dossier de base.

  9. Notez l'empreinte associée à la clé d'API. Lorsque vous disposez de plusieurs clés d'API, vous devez connaître l'empreinte à utiliser pour chaque fichier PEM privé.
  10. Si vous n'avez pas encore configuré de fichier config pour l'empreinte sur votre ordinateur local, dans la section Clés d'API, procédez comme suit :

    1. Cliquez sur Autres dans la ligne correspondant à l'empreinte de la clé d'API, puis sur Afficher le fichier de configuration.

    2. Copiez le contenu de l'aperçu du fichier de configuration.

    3. Dans le dossier .oci de votre ordinateur local (dossier dans lequel vous avez enregistré le fichier de clés privées), créez un fichier nommé config et collez le contenu copié dans le fichier.

  11. Dans le fichier config, modifiez la propriété key_file pour qu'elle pointe vers l'emplacement du fichier PEM privé. Par exemple : key_file=/home/joe/.oci/my-private.pem

  12. Si vous ne disposez d'aucun jeton d'authentification, cliquez sur Jetons d'authentification dans le menu Ressources, puis sur Générer un jeton. Copiez immédiatement le jeton d'authentification vers un emplacement sécurisé à partir duquel vous pourrez le récupérer ultérieurement car vous ne pourrez plus le voir dans la console. Vous utilisez le jeton d'authentification en tant que mot de passe lorsque vous vous connectez pour propager le package de composants personnalisés vers le registre Oracle Infrastructure à des fins de déploiement.

Configuration de votre ordinateur local pour Oracle Functions

Vous devez installer cURL, l'interface de ligne de commande (CLI) OCI, Fn et Docker sur votre ordinateur local pour activer le déploiement vers Oracle Cloud Infrastructure Functions. Si votre ordinateur fonctionne sous Windows, vous devez appliquer l'une des options suivantes pour utiliser Fn :

  • Installez Fn et Docker sur Linux dans une instance Oracle VM VirtualBox en suivant les étapes de cette rubrique.

  • Installez Docker et Fn sur Windows, puis installez le sous-système Linux pour Windows comme décrit dans Exécution du client Fn sur Windows et connexion à un serveur Fn distant.

  • Déployez vos composants personnalisés à partir de Cloud Shell. Reportez-vous à Cloud Shell dans la documentation Oracle Cloud Infrastructure.

Pour configurer l'ordinateur local, procédez comme suit :

  1. (Windows sur machine virtuelle uniquement) Si vous voulez utiliser un invité Linux sur Oracle VM VirtualBox afin de déployer votre package de composants personnalisés vers Oracle Cloud Infrastructure Functions, procédez comme suit :

    1. Installez VirtualBox à partir de l'adresse https://www.virtualbox.org/.

    2. Téléchargez une image ISO Linux. Par exemple, pour obtenir l'image ISO d'Ubuntu-Mate, accédez à la page https://ubuntu-mate.org/fr/download/ et cliquez sur PCs 64-bit/Mac.

    3. Dans VirtualBox, créez une machine virtuelle à partir de l'image ISO. Vous trouverez des instructions sur la création d'une machine virtuelle Ubuntu-Mate à l'adresse https://itsfoss.com/install-linux-in-virtualbox/. Cette machine virtuelle est votre invité Linux.

    4. Démarrez l'invité Linux.

    5. A partir d'une fenêtre de terminal, exécutez la commande suivante :

      sudo apt-get update

      Vous mettez ainsi à jour les listes de packages pour les nouveaux packages et ceux nécessitant une mise à niveau.

      Conseil :

      Pour ouvrir une fenêtre de terminal dans Ubuntu, appuyez sur Ctrl+Alt+T.
    6. Pour pouvoir effectuer des opérations telles que copier et coller dans une fenêtre de terminal, vous aurez besoin des additions invité. Téléchargez http://download.virtualbox.org/virtualbox/<release>/VBoxGuestAdditions_<release>.iso, puis installez et configurez les additions en suivant les instructions disponibles sur la page https://itsfoss.com/virtualbox-guest-additions-ubuntu/

      Veillez à configurer Appareils > Glisser-déplacer en bidirectionnel.

    7. Entrez la commande suivante dans une fenêtre de terminal pour installer Node.js et npm sur l'invité.

      sudo apt install npm
    8. Faites glisser le dossier .oci de votre répertoire de base sur l'ordinateur local vers le dossier de base de l'invité Linux.

      Etant donné qu'il s'agit d'un fichier masqué, vous devez appuyer sur Ctrl+H ou sélectionner Afficher > Afficher les fichiers masqués dans le dossier de base pour le faire apparaître.

    9. Dans le dossier .oci sur l'invité Linux, ouvrez le fichier config et modifiez key_file de façon à pointer vers l'emplacement du fichier sur l'invité Linux. Par exemple : key_file=/home/joe/.oci/my-private.pem

    10. Effectuez les étapes restantes de cette rubrique à partir de l'invité Linux.

  2. (Mac uniquement) Si vous ne l'avez pas encore fait, installez Homebrew pour pouvoir installer cURL, l'interface de ligne de commande OCI et Fn. Reportez-vous à la page https://docs.brew.sh/Installation. Vous pouvez également utiliser les commandes MacPorts équivalentes.
  3. Si vous accédez à Internet via un VPN, vous devrez peut-être configurer des proxies. Par exemple :

    export http-proxy = http://<external_ip>:80
    export https-proxy = http://<external_ip>:80
    export no_proxy = localhost,127.0.0.1,<list>
    export noproxy = localhost,127.0.0.1,<list>
    export no_proxy = localhost,127.0.0.1,<list>
    # Example for apt
    nano /etc/apt/apt.conf
    Acquire::http::Proxy "http://<external_ip>:80";
    Acquire::https::Proxy "http://<external_ip>:80";
  4. Exécutez la commande appropriée pour mettre à jour les packages.

    • Linux :

      sudo apt update && sudo apt upgrade
    • Mac :

      brew update && brew upgrade
  5. (Linux uniquement) Vous allez utiliser cURL pour installer OCI et Fn. Entrez la commande suivante dans une fenêtre de terminal. La dernière instruction permet de vérifier que l'installation est effectuée correctement.

    sudo apt install curl
    curl --version
  6. Fn utilise l'interface de ligne de commande OCI pour déployer les composants personnalisés vers Oracle Cloud Infrastructure Functions. Exécutez la commande appropriée pour installer l'interface de ligne de commande et acceptez toutes les valeurs par défaut.

    • Linux :

      bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
    • Mac :

      brew update && brew install oci-cli
    • Windows (si vous utilisez un sous-système Linux sur Windows) : suivez les étapes Windows de démarrage rapide dans la documentation Oracle Cloud Infrastructure.
  7. Dans Configuration de votre compte utilisateur pour Oracle Functions, vous avez créé un fichier config. Vous devez à présent configurer l'interface de ligne de commande pour qu'elle utilise ce fichier. Ouvrez une nouvelle fenêtre de terminal, exécutez cette commande, indiquez l'emplacement du fichier config, puis entrez n pour les questions restantes (le fichier config possède déjà les paramètres nécessaires).

    oci setup config

    Par exemple :

    $ oci setup config
        This command provides a walkthrough of creating a valid CLI config file.
        ...
    
    Enter a location for your config [/home/joe/.oci/config]:
    Config file: /home/joe/.oci/config already exists. Do you want add a profile here? (If no, you will be prompted to overwrite the file) [Y/n]: n
    File: /home/joe/.oci/config already exists. Do you want to overwrite (Removes existing profiles!!!)? [y/N]: n
  8. Vous devez disposer de Docker 17.10.0-ce ou version ultérieure pour propager le package de composants personnalisés vers le registre.

    Reportez-vous à la page https://docs.docker.com/engine/install/linux-postinstall/ si vous ne souhaitez pas faire précéder la commande docker de sudo.

  9. Si vous utilisez un VPN, suivez les instructions disponibles à l'adresse https://docs.docker.com/network/proxy/

    Si vous utilisez le sous-système Linux sur Windows, vous pouvez définir les proxies à partir de la page Ressources dans les paramètres de Docker Desktop.

  10. Vérifiez que Docker est en cours d'exécution. Vous ne pouvez pas démarrer Fn, que vous installez par la suite, si Docker n'est pas en cours d'exécution.

  11. Vous allez utiliser Fn, plate-forme légère de fonctions sans serveur Docker, pour configurer le contexte et déployer le package. Si vous ne l'avez pas déjà installé, suivez les instructions d'installation de Fn, de démarrage du serveur Fn et de test de l'installation à l'adresse https://fnproject.io/tutorials/install/

    Vous n'avez pas besoin de configurer le contexte ni de définir le registre pour le moment. Pour cela, suivez les étapes décrites dans Déploiement des composants personnalisés vers Oracle Cloud Infrastructure Functions.

Modification du package de composants personnalisés pour Oracle Functions

Afin de pouvoir déployer un package de composants personnalisés vers Oracle Cloud Infrastructure Functions, vous devez ajouter les fichiers func.js et func.yaml, ajouter une dépendance de développeur pour le kit de développement de fonction Fnproject et installer le kit.

Remarque

(Machine virtuelle Windows uniquement) Si vous utilisez un invité Linux, effectuez ces étapes sur votre ordinateur local, puis utilisez le glisser-déplacer pour copier le package de composants vers l'invité Linux. Vous pouvez également installer Node.js et le kit SDK Bots Node, comme décrit dans Etape 1 : installation du logiciel pour créer des composants personnalisés, sur l'invité Linux avant de suivre la procédure.
  1. Si vous avez utilisé la commande bots-node-sdk init pour créer votre package de composants personnalisé, il se peut qu'il ait créé un fichier nommé Dockerfile dans le dossier supérieur. Si tel est le cas, vous devez le supprimer. Sinon, votre déploiement échouera.

  2. Dans le dossier principal du package de composants personnalisés (dossier contenant main.js), créez un fichier nommé func.js, puis ajoutez le code suivant. Fichier appelé par Oracle Cloud Infrastructure Functions.

    /***
     
      This function handles an invocation that sets the "Oracle-Bots-Fn-Path" header to determine which component to invoke or if metadata should be returned.
     
    ***/
     
    const fdk = require('@fnproject/fdk');
    const OracleBotLib = require('@oracle/bots-node-sdk/lib');
    const path = require("path");
     
    const BOTS_FN_PATH_HEADER = "Oracle-Bots-Fn-Path";
    const METADATA_PATH = "metadata";
    const COMPONENT_PREFIX = "components/";
     
    let shell;
    let componentsRegistry;
     
    const getComponentsRegistry = function (packagePath) {
        let registry = require(packagePath);
        if (registry.components) {
            return OracleBotLib.ComponentRegistry.create(registry.components, path.join(process.cwd(), packagePath));
        }
        return null;
    }
     
    componentsRegistry = getComponentsRegistry('.');
    if (componentsRegistry && componentsRegistry.getComponents().size > 0) {
        shell = OracleBotLib.ComponentShell({logger: console}, componentsRegistry);
        if (!shell) {
            throw new Error("Failed to initialize Bots Node SDK");
        }
    } else {
        throw new Error("Unable to process component registry because no components were found in package: " + packagePath);
    }
     
    const _handle = function (input, ctx) {
        let botsFnPath = ctx.getHeader(BOTS_FN_PATH_HEADER);
        if (!botsFnPath) {
            throw new Error("Missing required header " +  BOTS_FN_PATH_HEADER);
        } else if (botsFnPath === METADATA_PATH) {
            return shell.getAllComponentMetadata();
        } else if (botsFnPath.startsWith(COMPONENT_PREFIX)) {
            let componentName = botsFnPath.substring(COMPONENT_PREFIX.length);
            if (!componentName) {
                throw new Error("The component name is missing from the header " + BOTS_FN_PATH_HEADER + ": " + botsFnPath);
            }
            return new Promise((resolve) => {
                let callback = (err, data) => {
                    if (!err) {
                        resolve(data);
                    } else {
                        console.log("Component invocation failed", err.stack);
                        throw err;
                    }
                };
                shell.invokeComponentByName(componentName, input, {logger: () => console}, callback);
                });
        }
    };
     
    fdk.handle(function (input, ctx) {
        try {
            return _handle(input, ctx);
        } catch (err) {
            console.log("Function failed", err.stack);
            throw err;
        }
    });
  3. Dans le même dossier, créez un fichier nommé func.yaml, puis ajoutez le contenu suivant :

    schema_version: 20180708
    name: <custom component package name>
    version: 0.0.1
    runtime: [node11|node14]
    build_image: [fnproject/node:11-dev|fnproject/node:14-dev]
    run_image: [fnproject/node:11|fnproject/node:14]
    entrypoint: node func.js
  4. Dans la propriété name, remplacez <custom component package name> par le nom du package de composants personnalisés, puis enregistrez les modifications. Le nom est généralement celui que vous indiquez dans le fichier package.json.

    Le nom ne doit pas comporter plus de 255 caractères, et doit contenir uniquement des lettres, des chiffres, _ et -.

  5. Définissez les propriétés suivantes :

    • runtime : langue et version du noeud. Indiquez node11 ou node14.

    • build_image : image de base de compilation contenant les bibliothèques et les outils propres au langage permettant de créer des fonctions exécutables. Indiquez fnproject/node:11-dev ou fnproject/node:14-dev.

    • run_image : image de base d'exécution qui fournit l'environnement d'exécution propre au langage dans lequel exécuter les fonctions exécutables. Indiquez fnproject/node:11 ou fnproject/node:14.

  6. Dans une fenêtre de terminal, passez au dossier principal du package et entrez la commande suivante pour installer le kit de développement de fonction et l'ajouter en tant que dépendance de package dans le fichier package.json :

    npm install --save-dev @fnproject/fdk
  7. (Facultatif – Linux, Mac et sous-système Linux sur Windows uniquement) Exécutez la commande suivante pour installer les dépendances de package :

    npm install

    Si le dossier node_modules n'existe pas, la commande fn deploy exécutée ultérieurement appelle npm install pour vous.

  8. (Machine virtuelle Windows uniquement) Afin de copier le code de composant personnalisé vers l'invité Linux pour le déploiement, procédez comme suit :

    1. Glissez-déplacez le dossier de niveau supérieur vers l'invité Linux.

    2. Dans une fenêtre de terminal, passez au dossier de niveau supérieur (celui qui contient main.js) et saisissez la commande suivante afin d'ajouter des droits d'exécution pour le dossier.

      chmod 755 components
    3. Supprimez le dossier node_modules pour vous assurer que vous ne disposez d'aucun module de noeud dépendant de la plate-forme.

    4. (Facultatif) Exécutez la commande suivante pour réinstaller les dépendances de module de noeud.

      npm install

      Si le dossier node_modules n'existe pas, la commande fn deploy exécutée ultérieurement appelle npm install pour vous.

Vous êtes maintenant prêt à suivre les étapes décrites dans Déploiement des composants personnalisés vers Oracle Cloud Infrastructure Functions.

Déploiement des composants personnalisés vers Oracle Cloud Infrastructure Functions

Une fois que vous avez créé le fichier func.js, ajouté Fnproject aux dépendances de développement et installé les dépendances comme décrit dans Modification du package de composants personnalisés pour Oracle Functions, vous êtes prêt à déployer une image Docker du package de composants vers Oracle Cloud Infrastructure Functions.

Lorsque vous avez effectué les étapes décrites dans Configuration de votre compte utilisateur pour Oracle Functions, vous avez copié les commandes de la configuration locale sur la page Mise en route pour les étapes 3 à 7. Ces commandes copiées vont vous permettre de déployer vos composants personnalisés.

Si vous utilisez Cloud Shell, exécutez plutôt les commandes similaires indiquées dans Configuration de Cloud Shell.

Pour déployer les composants personnalisés, procédez comme suit :

  1. Assurez-vous que Docker et le serveur Fn sont en cours d'exécution.

  2. Dans une fenêtre de terminal, passez au répertoire principal du package de composants personnalisés et entrez les commandes copiées équivalentes pour configurer le contexte.

    fn create context <context> --provider oracle
    fn use context <context>
    fn update context oracle.compartment-id <compartment-ocid>
    fn update context api-url https://functions.<region-identifier>.oci.oraclecloud.com

    Vous n'avez pas à réexécuter ces commandes tant que vous n'avez pas besoin de modifier les configurations de contexte.

    Si vous obtenez l'erreur "Fn : error replace file with tempfile" lorsque vous modifiez le contexte, modifiez manuellement ~/.fn/config.yaml et modifiez le contexte dans ce fichier.

  3. Si votre fichier de configuration possède plusieurs profils, entrez cette commande pour pointer vers le profil que vous avez créé dans Configuration de votre compte utilisateur pour Oracle Functions.

    fn update context oracle.profile <profile-name>
  4. Pour pointer vers le référentiel de registre que vous avez créé dans Configuration de votre compte utilisateur pour Oracle Functions, entrez la commande copiée équivalente à la suivante. Si vous ne l'avez pas encore fait, remplacez [OCIR-REPO] par le nom de votre référentiel.

    fn update context registry <region-key>.ocir.io/<tenancy-namespace>/[OCIR-REPO]

    Vous n'avez pas à réexécuter cette commande tant que vous n'avez pas besoin de modifier la configuration du référentiel.

  5. Si vous ne vous êtes pas connecté à Docker dans la session en cours, exécutez la commande copiée équivalente à celle indiquée ici.

    Lorsque vous êtes invité à saisir un mot de passe, entrez votre jeton d'authentification, qui est le jeton obtenu lors des étapes décrites dans Configuration de votre compte utilisateur pour Oracle Functions.

    docker login -u '<tenancy-namespace>/<user-name>' <region-key>.ocir.io
  6. Pour déployer les composants personnalisés, exécutez la commande suivante :

    fn deploy --app <application>

    Si le message suivant apparaît, ouvrez le fichier .oci/config et vérifiez que fingerprint indique l'empreinte correcte pour l'élément key_file spécifié. Si tel n'est pas le cas, accédez à vos paramètres utilisateur dans la console, cliquez sur Clés d'API, affichez le fichier de configuration correspondant à l'empreinte correcte, puis remplacez le contenu de votre fichier de configuration par le contenu affiché.

    Fn: Service error:NotAuthenticated. The required information to complete
    authentication was not provided or was incorrect.. 
    http status code: 401.

Vos composants personnalisés sont prêts à être utilisés dans une brique, tel que décrit dans Ajout d'un service Oracle Functions.

Déploiement vers Mobile Hub

Pour héberger un package de composants personnalisé dans Mobile Hub, utilisez l'interface de ligne de commande bots-node-sdk pack --service mobile-api pour copier les dossiers de votre package de composants et effectuer quelques modifications propres à Mobile Hub, y compris le fichier RAML. Ensuite, créez l'API personnalisée à partir du fichier RAML et téléchargez un fichier ZIP du package de composants vers l'API personnalisée.

  1. Dans le dossier de niveau supérieur du package de composants personnalisé (celui qui contient le fichier main.js), saisissez cette commande dans une fenêtre de terminal :

    bots-node-sdk pack --service mobile-api

    Cette commande effectue les opérations suivantes :

    • Elle copie les fichiers et sous-dossiers dans service-mobile-api-<package version>.
    • Elle ajoute un fichier component.service.raml contenant les adresses et les opérations nécessaires.
    • Elle crée un fichier api.js, qui est un wrapper de Mobile Hub pour main.js.
    • Elle modifie le fichier package.json pour définir le fichier principal sur api.js, définir les dépendances et ajouter la configuration du noeud Mobile Hub.

    Cette étape représente la commande d'interface de ligne de commande de base. Pour plus d'informations, reportez-vous à https://github.com/oracle/bots-node-sdk/blob/master/bin/CLI.md.

  2. Vérifiez le fichier package.json et assurez-vous que le nom du package respecte les contraintes Mobile Hub suivantes : Modifiez le nom en conséquence.
    • Le nom doit être composé uniquement de lettres (A-Z, a-z), de chiffres (0-9) et de traits de soulignement (_).
    • Le nom doit commencer par une lettre.
    • Le nom ne doit pas comporter plus de 100 caractères.
  3. Sur la page d'API Mobile Hub, cliquez sur Nouvelle API > API, puis créez l'API personnalisée en téléchargeant le fichier component.service.raml vers le serveur.

  4. Dans l'onglet Sécurité, désactivez Connexion requise, puis cliquez sur Enregistrer.

  5. Compressez le dossier service-mobile-api-<package version>, puis téléchargez le fichier ZIP vers le serveur à partir de l'onglet Implémentation de l'API personnalisée.

  6. A partir de la page Test, appelez la demande GET. La réponse doit afficher les métadonnées de composant.

    Conseil :

    Si vous obtenez le statut 500 et que l'erreur indique que la définition d'acheminement correspondante est introuvable, recherchez des éléments de syntaxe JavaScript erronés dans vos fichiers, car il s'agit de la cause la plus courante.