IBM Cloud Docs
Esecuzione di una funzione dall'origine locale

Esecuzione di una funzione dall'origine locale

Con questa esercitazione, esegui una funzione con la CLI Code Engine dal tuo codice sul sistema locale

Una funzione è un frammento di codice stateless che esegue delle operazioni quando viene richiamato da richieste di tipo " HTTP ". Con le funzioni di scalabilità e serverless di IBM Code Engine, puoi gestire la tua logica di business in modo scalabile e senza server. IBM Code Engine le funzioni forniscono un ambiente di runtime ottimizzato per supportare scenari a bassa latenza e rapidi di scalabilità orizzontale. Il codice funzione può essere scritto in un runtime gestito che include versioni specifiche di Node.js o Python.

Un bundle di codici è una raccolta di file che rappresenta il codice della funzione. Questo bundle di codice viene inserito nel contenitore di runtime. Il tuo bundle di codice è creato da Code Engine ed è memorizzato nel registro del contenitore o in linea con la funzione. Un bundle di codice non è un'immagine contenitore standard OCI (Open Container Initiative).

Prima di iniziare

Tutti gli utenti Code Engine devono avere un account Pagamento a consumo. Le esercitazioni potrebbero comportare dei costi. Utilizza il Cost Estimator per generare una stima dei costi basata sull'utilizzo previsto. Per ulteriori informazioni, vedi Prezzi diCode Engine.

Configura l'ambiente

  1. Accedi alla CLI IBM Cloud.

    ibmcloud login -r us-south
    
  2. Specifica un gruppo di risorse immettendo il seguente comando: Per visualizzare un elenco dei gruppi di risorse, eseguire ibmcloud resource groups.

    ibmcloud target -g <resource_group>
    

    Output di esempio

    Targeted resource group default
    
  3. Crea un progetto in Code Engine denominato sample.

    ibmcloud ce project create --name sample
    

    Output di esempio

    Creating project 'sample'...
    ID for project 'sample' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
    Waiting for project 'sample' to be active...
    Now selecting project 'sample'.
    OK
    

    Si noti che il progetto è selezionato anche per il contesto, quindi tutti i comandi successivi relativi all'applicazione rientrano nell'ambito di questo nuovo progetto sample.

  4. Acquisire familiarità con i comandi delle funzioni visualizzandone le opzioni.

    ibmcloud ce fn --help
    

Creare il codice sorgente

Crea un file di origine Node.js denominato funhello.js con il seguente codice di esempio.

  function main(params) {
      var msg = 'You did not tell me who you are.';
      if (params.name) {
          msg = `Hello, ${params.name}!`
       } else {
          msg = `Hello, Functions on CodeEngine!`
      }
      return {
          headers: { 'Content-Type': 'text/html; charset=utf-8' },
          body: `<html><body><h3>${msg}</h3></body></html>`
       }
  }

  module.exports.main = main;

Crea la tua funzione

Creare la funzione dal file funhello.js.

ibmcloud ce fn create --name funhello --runtime nodejs-20 --build-source funhello.js

Output del comando

Preparing function 'funhello' for build push...
Creating function 'funhello'...
Packaging files to upload from source path 'hello.js'...
Submitting build run 'funhello-run-230623-090738611'...
Creating image 'private.stg.icr.io/ce--8a6a0-13c66hbi3rhz/function-funhello:230623-1407-s8kzr'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n funhello-run-230623-090738611' to check the build run status.
Waiting for function 'funhello' to become ready...
Function 'funhello' is ready.
OK
Run 'ibmcloud ce function get -n funhello' to see more details.

https://funhello.13c66hbi3rhz.us-south.codeengine.appdomain.cloud

Dopo l'invocazione della funzione, diventa disponibile " URL ", utilizzare il seguente comando per trovare informazioni sulla funzione.

ibmcloud ce fn get -n funhello

Diamo un'occhiata più a fondo al comando function create precedente. Si noti che l'emissione del comando function create fornisce informazioni sull'avanzamento dell'esecuzione della creazione prima che la funzione venga creata e distribuita.

  1. Code Engine riceve la richiesta di creare una funzione dal codice sorgente.
  2. Code Engine controlla un ID servizio IAM e una chiave API associati al progetto selezionato. Questo ID servizio deve essere autorizzato a leggere e scrivere in IBM Cloud Container Registry. Se non esiste alcun ID servizio, Code Engine ne crea uno per te. Tieni presente che questo ID servizio viene utilizzato per le successive richieste di build Code Engine eseguite dallo stesso progetto.
  3. Questo esempio crea codice da un'origine locale (--build-source). Il codice di origine (hello.js) viene compresso in un file bundle di codice e caricato in un namespace gestito all'interno dell'istanza IBM Cloud Container Registry nel tuo account. Nota che puoi specificare solo IBM Cloud Container Registry per le tue build locali. Per ulteriori informazioni su IBM Container Registry, incluse informazioni sui limiti di quote e sull'accesso, vedere Getting started with IBM Cloud Container Registry.
  4. Code Engine crea il tuo codice sorgente in un bundle di codici. Il bundle del codice di origine viene creato nello stesso spazio dei nomi del file di archivio di origine.
  5. Una volta completata la creazione, la funzione viene distribuita. Puoi accedere alla tua funzione dall' URL.

Richiama la funzione

Richiama la funzione URL incollandola in una finestra del browser. È inoltre possibile utilizzare il comando curl nella riga comandi.

Hello, Functions on CodeEngine!

Hai creato e richiamato correttamente una funzione Code Engine !

Fornire parametri per la funzione

Richiamare la funzione URL con un parametro aggiungendo ?name=Sunshine alla fine dell' URL e e incollandola in una finestra del browser.

https://funhello.13c66hbi3rhz.us-south.codeengine.appdomain.cloud?name=Sunshine
Hello, Sunshine!

Ripulisci

È possibile eliminare la funzione con il seguente comando.

ibmcloud ce fn delete -n funhello

Quando si elimina la funzione, vengono eliminati anche i file di build associati.

Infine, elimina il pacchetto di codici creato dalla build da IBM Cloud Container Registry.

  1. Navigare verso Container Registry> immagini nel IBM Cloud consolle.
  2. Seleziona la regione nel Posizione menu a discesa selezionato al momento dell'accesso IBM Cloud.
  3. Trova l'immagine (che rappresenta il tuo pacchetto di codici) associata alla tua funzione cercando il nome della funzione (ad esempio,funhello ).
  4. Seleziona l'immagine (ad esempio,au.icr.io/ce--27b98-1jp42v8n9n3o/function-funhello@sha256:b53683f47e0e548b4fa1d3fc93404399fdc4008b54ccecc0852794ea88d01538 ) e selezionare Eliminare dal menu dei puntini di sospensione (...).

Passi successivi

  • Dopo aver creato la funzione, è possibile accedervi facendo clic su Test function (Verifica funzione) nella console o individuando l' URL a della funzione con il comando function get comando.

  • È possibile creare un' associazione dominio personalizzata e assegnarla alla funzione.

  • Dopo che la tua funzione è stata creata e distribuita, puoi aggiornarla per soddisfare le tue necessità dalla console o utilizzando il comando ibmcloud ce function update. Se si desidera aggiornare l'origine da utilizzare con la propria funzione, è necessario fornire l'opzione --build-source nel comando function update.

Una volta creata la funzione, è possibile aggiornare la funzione e il relativo codice di riferimento utilizzando uno qualsiasi dei seguenti modi, indipendentemente da come è stata creata o precedentemente aggiornata la funzione:

  • Se hai un bundle di codice esistente, devi fornire solo un riferimento all'immagine, che punta all'ubicazione del tuo registro del contenitore quando distribuisci la tua applicazione. Per ulteriori informazioni, consultare Creazione di carichi di lavoro di funzioni da bundle di codice esistenti.

    Se la funzione è stata creata utilizzando il comando function create ed è stata specificata l'opzione --build-source per creare il bundle di codice dall'origine locale o del repository e si desidera modificare la funzione in modo che punti a un bundle di codice diverso, è necessario prima rimuovere l'associazione della build dalla funzione. Ad esempio, eseguire ibmcloud ce function update -n FUN_NAME --build-clear. Dopo aver rimosso l'associazione della build dalla funzione, è possibile aggiornare la funzione in modo che faccia riferimento a un'altra immagine.

  • Se stai iniziando con il codice sorgente che risiede in un repository Git, puoi scegliere di consentire a Code Engine di creare il bundle di codici dalla tua origine e creare la tua funzione con una singola operazione. In questo scenario, Code Engine carica il tuo bundle di codici in IBM Cloud® Container Registry. Per ulteriori informazioni, consultare Creazione della funzione dal codice sorgente del repository.

  • Se stai iniziando con il codice di origine che risiede su una workstation locale, puoi scegliere Code Engine per creare il bundle di codice dalla tua origine e creare la tua funzione con un comando CLI singolo. In questo scenario, Code Engine carica il tuo codice sorgente e il tuo bundle di codici in IBM Cloud® Container Registry.

    Ad esempio, potresti scegliere Code Engine per creare la tua origine locale mentre sviluppi lo sviluppo della tua origine per la funzione. Quindi, una volta maturato il bundle di codice, è possibile aggiornare la funzione per fare riferimento al bundle di codice specifico desiderato. È possibile ripetere questo processo in base alle necessità.

Cerchi altri esempi di codice? Controlla gli Esempi per il repository IBM Cloud Code Engine GitHub.