Création de charges de travail de fonction avec du code en ligne

Vous pouvez créer votre fonction avec du code en ligne. Votre code est stocké avec votre fonction. Vous pouvez créer ce type de fonction à partir de la console ou à l'aide de l'interface de ligne de commande.

Un bundle de code est une collection de fichiers qui représente votre code de fonction. Ce bundle de code est injecté dans le conteneur d'exécution. Votre bundle de code est créé par Code Engine et est stocké dans le registre de conteneur ou en ligne avec la fonction. Un bundle de code n'est pas une image de conteneur standard OCI (Open Container Initiative).

Création d'une fonction en ligne avec la console

Créez une fonction avec un code en ligne à partir de la console.

  1. Ouvrez la console Code Engine.
  2. Sélectionnez « Commencer la création ».
  3. Sélectionnez un projet dans la liste des projets disponibles. Vous pouvez aussi en créer un. Vous devez sélectionner un projet pour créer une fonction.
  4. Sélectionnez « Fonction ».
  5. Saisissez un nom pour la fonction; par exemple, « myfunction ». Choisissez pour votre fonction un nom unique au sein du projet.
  6. Sélectionnez une image d'exécution pour votre code de fonction. Pour plus d'informations, voir Environnements d'exécution.
  7. Sélectionnez cette option pour définir votre code en tant qu'ensemble de code intégré. Lorsque vous sélectionnez cette option, votre fonction est créée avec un exemple de bundle de code pour l'environnement d'exécution sélectionné. Vous pouvez éditer l'exemple de code une fois la fonction créée. Le bundle de code est stocké en ligne avec la fonction.
  8. Spécifiez vos informations de ressource, y compris les combinaisons d'UC et de mémoire et Scale down delay.
  9. Vous pouvez éventuellement spécifier un domaine personnalisé ou des variables d'environnement. Vous pouvez ajouter ces options ultérieurement.
  10. Cliquez sur Créer.
  11. Une fois que l'état de la fonction passe à « **Prêt ** », vous pouvez tester la fonction. Cliquez sur Fonction de test, puis sur Envoyer la demande. Pour ouvrir la fonction dans une page Web, cliquez sur « Fonction » URL.
  12. Vous pouvez également modifier votre code de fonction dans la fenêtre de l'éditeur. Lorsque vous redéployez votre fonction, le code est stocké en ligne.

Vous pouvez appeler votre fonction en cliquant sur Fonction de test, puis sur Envoyer une demande.

Vous pouvez extraire le code qui a été utilisé pour créer une fonction en ligne en exécutant la commande function get avec les options --save. Par exemple, ibmcloud ce function get --name myfunction --save hellofun2.js.

Création d'une fonction avec du code en ligne à l'aide de l'interface de ligne de commande

Créez une fonction avec du code en ligne avec l'interface de ligne de commande à l'aide de la commande ibmcloud ce function create. Pour obtenir la liste complète des options, consultez la ibmcloud ce function create commande.

Avant de commencer

Cet exemple utilise un fichier de code nommé main.js. Vous pouvez utiliser l'exemple de code suivant pour créer votre fichier main.js ou vous pouvez remplacer votre propre code.

/**
 * The `main` function is the entry-point into the function.
 * It has one optional argument, which carries all the
 * parameters the function was invoked with.
*/
async function main(params) {
  // log environment variables available to the function
  console.log(process.env);
  // log Code Engine system headers available to the function
  console.log(params.__ce_headers);
  // log all parameters for debugging purposes
  console.log("params: "+params);
  // since functions are invoked through http(s), we return an HTTP response
  return {
      statusCode: 200,
      headers: { 'Content-Type': 'application/json' },
      body: params };
}
// this step is necessary, if you gave your main function a different name
// we include it here for documentation purposes only
module.exports.main = main;

Créez votre fonction et incluez le code dans la commande. Par exemple, utilisez la commande ibmcloud ce function create pour créer la fonction myhellofun.

ibmcloud ce fn create --name myhellofun --inline-code main.js --runtime nodejs

Exemple de sortie

Creating function 'myhellofun'...
OK
Run 'ibmcloud ce function get -n myhellofun' to see more details.
https://myhellofun.glxo4kabcde.us-south.codeengine.appdomain.cloud

Vous pouvez sauvegarder le code qui a été utilisé pour créer une fonction en ligne en exécutant la commande function get avec les options --save. Par exemple, ibmcloud ce function get --name myhellofun --save hellofun2.js.

Etapes suivantes

  • Une fois votre fonction créée, vous pouvez y accéder en cliquant sur Test function dans la console ou en recherchant l' URL s de votre fonction avec la function get commande.

  • Vous pouvez créer un mappage de domaine personnalisé et l'affecter à votre fonction.

  • Une fois votre fonction créée et déployée, vous pouvez la mettre à jour pour répondre à vos besoins à partir de la console ou à l'aide de la commande ibmcloud ce function update. Si vous souhaitez mettre à jour votre source pour l'utiliser avec votre fonction, vous devez spécifier l'option « --build-source » dans la function update commande.

Une fois votre fonction créée, vous pouvez la mettre à jour, ainsi que le code auquel elle fait référence, en utilisant l'une des méthodes suivantes, quelle que soit la manière dont vous avez créé ou mis à jour précédemment votre fonction :

  • Si vous disposez d'un bundle de code existant, vous devez fournir uniquement une référence à l'image, qui pointe vers l'emplacement de votre registre de conteneur lorsque vous déployez votre application. Pour plus d'informations, voir Création de charges de travail de fonction à partir de bundles de code existants.

    Si vous avez créé votre fonction à l'aide de la commande function create et que vous avez spécifié l'option --build-source pour générer le bundle de code à partir de la source locale ou du référentiel, et que vous souhaitez modifier votre fonction pour qu'elle pointe vers un bundle de code différent, vous devez d'abord supprimer l'association de la génération de votre fonction. Par exemple, exécutez ibmcloud ce function update -n FUN_NAME --build-clear. Après avoir supprimé l'association de la génération de votre fonction, vous pouvez mettre à jour la fonction pour référencer une image différente.

  • Si vous partez d'un code source hébergé dans un dépôt Git, vous pouvez choisir de laisser Code Engine se charger de compiler le bundle de code à partir de vos sources et de créer votre fonction en une seule opération. Dans ce scénario, Code Engine télécharge votre ensemble de codes vers IBM Cloud® Container Registry. Pour en savoir plus, voir Création de votre fonction à partir du code source du référentiel.

  • Si vous démarrez avec du code source qui réside sur un poste de travail local, vous pouvez choisir pour Code Engine de générer le bundle de code à partir de votre source et de créer votre fonction à l'aide d'une commande d'interface de ligne de commande unique. Dans ce scénario, Code Engine télécharge votre code source et votre bundle de code dans IBM Cloud® Container Registry.

    Par exemple, vous pouvez choisir d'utiliser Code Engine pour compiler votre code source local pendant que vous poursuivez le développement de ce dernier pour cette fonctionnalité. Ensuite, une fois que le bundle de code est arrivé à maturité, vous pouvez mettre à jour votre fonction pour référencer le bundle de code spécifique de votre choix. Vous pouvez répéter ce processus si nécessaire.

Vous recherchez d'autres exemples de code ? Découvrez le site Exemples pour le dépôt « IBM Cloud Code Engine GitHub ».