Durchführung einer Veranstaltung aus lokaler Quelle

Mit diesem Tutorial führen Sie eine Funktion mit der Code Engine CLI aus dem Code auf Ihrem lokalen System aus

Eine Funktion ist ein zustandsloser Codeausschnitt, der Aufgaben ausführt, wenn er durch HTTP-Anfragen aufgerufen wird. Mit den Funktionen von IBM Code Engine können Sie Ihre Geschäftslogik auf skalierbare und serverlose Weise ausführen. IBM Code Engine funktionen bieten eine optimierte Laufzeitumgebung zur Unterstützung von Szenarien mit geringer Latenz und schneller Skalierung. Ihr Funktionscode kann in einer verwalteten Laufzeitumgebung geschrieben werden, die spezifische Node.js- oder Python-Vers ionen enthält.

Ein Codepaket ist eine Sammlung von Dateien, die Ihren Funktionscode darstellt. Dieses Codepaket wird in den Laufzeitcontainer eingefügt. Ihr Code-Bundle wird von Code Engine erstellt und in der Container-Registry oder in der Funktion gespeichert. Ein Codepaket ist kein OCI-Standard-Container-Image (Open Container Initiative).

Vorbereitende Schritte

Alle Code Engine-Benutzer müssen über ein nutzungsabhängiges Konto verfügen. Für Tutorien können Kosten anfallen. Verwenden Sie den Cost Estimator, um einen Kostenvoranschlag auf der Grundlage Ihrer voraussichtlichen Nutzung zu erstellen. Weitere Informationen finden Sie unter Preisstruktur fürCode Engine.

Umgebung einrichten

  1. Melden Sie sich bei der IBM Cloud-CLI an.

    ibmcloud login -r us-south
    
  2. Führen Sie den folgenden Befehl aus, um eine Ressourcengruppe als Ziel festzulegen. Um eine Liste Ihrer Ressourcengruppen zu sehen, führen Sie ibmcloud resource groups.

    ibmcloud target -g <resource_group>
    

    Beispielausgabe

    Targeted resource group default
    
  3. Erstellen Sie in Code Engine ein Projekt namens sample.

    ibmcloud ce project create --name sample
    

    Beispielausgabe

    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
    

    Beachten Sie, dass Ihr Projekt auch für den Kontext ausgewählt ist, sodass alle nachfolgenden anwendungsbezogenen Befehle im Geltungsbereich dieses neuen sample-Projekts liegen.

  4. Machen Sie sich mit Funktionsbefehlen vertraut, indem Sie die Befehlsoptionen anzeigen.

    ibmcloud ce fn --help
    

Quellcode erstellen

Erstellen Sie eine Node.js-Quellendatei namens funhello.js mit dem folgenden Beispielcode.

  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;

Erstellen Sie Ihre Funktion

Erstellen Sie die Funktion aus der Datei funhello.js.

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

Befehlsausgabe

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

Nachdem die Funktionsaufruf URL verfügbar ist, verwenden Sie den folgenden Befehl, um Informationen über die Funktion zu finden.

ibmcloud ce fn get -n funhello

Sehen wir uns den vorherigen Befehl function create genauer an. Beachten Sie, dass die Ausgabe des Befehls function create befehls Informationen über den Verlauf des Build-Laufs liefert, bevor die Funktion erstellt und bereitgestellt wird.

  1. Code Engine empfängt eine Anforderung zum Erstellen einer Funktion aus Quellcode.
  2. Code Engine sucht nach einer IAM-Service-ID und einem API-Schlüssel, die mit dem ausgewählten Projekt verknüpft sind. Diese Service-ID muss zum Lesen und Schreiben auf IBM Cloud Container Registry berechtigt sein. Wenn keine Service-ID vorhanden ist, erstellt Code Engine eine ID für Sie. Beachten Sie, dass diese Service-ID für nachfolgende Code Engine-Build-Anforderungen verwendet wird, die von demselben Projekt ausgeführt werden.
  3. In diesem Beispiel wird Code aus einer lokalen Quelle (--build-source) erstellt. Der Quellcode (hello.js) wird in eine Code-Bundle-Datei gepackt und in einen verwalteten Namespace innerhalb der Instanz IBM Cloud Container Registry in Ihrem Konto hochgeladen. Beachten Sie, dass Sie nur IBM Cloud Container Registry für Ihre lokalen Builds verwenden können. Weitere Informationen über IBM Container Registry, einschließlich Informationen über Kontingentgrenzen und Zugriff, finden Sie unter Erste Schritte mit IBM Cloud Container Registry.
  4. Code Engine erstellt Ihren Quellcode in einem Codepaket. Das Quellcode-Bundle wird im gleichen Namensraum wie Ihre Quellarchivdatei erstellt.
  5. Nach Abschluss des Builds wird Ihre Funktion bereitgestellt. Sie können Ihre Funktion über die bereitgestellte URL aufrufen.

Funktion aufrufen

Rufen Sie die Funktion URL auf, indem Sie sie in ein Browserfenster einfügen. Sie können auch den Befehl curl in der Befehlszeile verwenden.

Hello, Functions on CodeEngine!

Sie haben erfolgreich eine Funktion Code Engine erstellt und aufgerufen!

Geben Sie Parameter für Ihre Funktion an

Rufen Sie die Funktion URL mit einem Parameter auf, indem Sie ?name=Sunshine an das Ende von URL anhängen und in ein Browserfenster einfügen.

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

Bereinigen

Sie können Ihre Funktion mit dem folgenden Befehl löschen:

ibmcloud ce fn delete -n funhello

Wenn Sie Ihre Funktion löschen, werden auch die zugehörigen Build-Dateien gelöscht.

Löschen Sie abschließend das Code-Bundle, das der Build von IBM Cloud Container Registry erstellt hat.

  1. Navigieren Sie zu Container Registry> Bilder im IBM Cloud Konsole.
  2. Wählen Sie die Region im Standort Dropdown-Menü, das Sie bei der Anmeldung ausgewählt haben IBM Cloud.
  3. Suchen Sie nach dem Namen Ihrer Funktion (z. B.funhello ).
  4. Wählen Sie das Bild aus (z. B.au.icr.io/ce--27b98-1jp42v8n9n3o/function-funhello@sha256:b53683f47e0e548b4fa1d3fc93404399fdc4008b54ccecc0852794ea88d01538 ) und wählen Sie Löschen aus dem Auslassungsmenü (...).

Nächste Schritte

  • Nachdem Ihre Funktion erstellt wurde, können Sie auf Ihre Funktion zugreifen, indem Sie in der Konsole auf "Funktion testen" klicken oder die URL für Ihre Funktion mit dem function get befehl.

  • Sie können eine angepasste Domänenzuordnung erstellen und sie Ihrer Funktion zuordnen.

  • Nach der Erstellung und Implementierung Ihrer Funktion können Sie die Funktion über die Konsole oder mit dem Befehl ibmcloud ce function update aktualisieren, um sie an Ihre Anforderungen anzupassen. Wenn Sie Ihren Quelltext aktualisieren wollen, um ihn mit Ihrer Funktion zu verwenden, müssen Sie die Option --build-source für den function update befehl angeben.

Nachdem Ihre Funktion erstellt wurde, können Sie Ihre Funktion und den referenzierten Code auf eine der folgenden Arten aktualisieren, unabhängig davon, wie Sie Ihre Funktion erstellt oder zuvor aktualisiert haben:

  • Wenn Sie über ein vorhandenes Code-Bundle verfügen, müssen Sie nur einen Verweis auf das Image angeben, der auf die Position Ihrer Container-Registry verweist, wenn Sie Ihre App implementieren. Weitere Informationen finden Sie unter Funktionsworkloads aus vorhandenen Code-Bundles erstellen.

    Wenn Sie Ihre Funktion mit dem Befehl function create erstellt und die Option --build-source angegeben haben, um das Codepaket aus einer lokalen Quelle oder einer Repository-Quelle zu erstellen, und Sie Ihre Funktion so ändern möchten, dass sie auf ein anderes Codepaket verweist, müssen Sie zuerst die Zuordnung des Builds aus Ihrer Funktion entfernen. Führen Sie beispielsweise ibmcloud ce function update -n FUN_NAME --build-clear aus. Nachdem Sie die Zuordnung des Builds zu Ihrer Funktion entfernt haben, können Sie die Funktion aktualisieren, um auf ein anderes Image zu verweisen.

  • Wenn Sie mit Quellcode beginnen, der sich in einem Git Repository befindet, können Sie Code Engine beauftragen, das Code-Bündel aus Ihren Quellen zu erstellen und Ihre Funktion mit einem einzigen Vorgang zu erzeugen. In diesem Szenario lädt Code Engine Ihr Code-Bündel auf IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter Funktion aus Repository-Quellcode erstellen.

  • Wenn Sie mit Quellcode beginnen, der sich auf einer lokalen Workstation befindet, können Sie für Code Engine auswählen, das Code-Bundle aus Ihrer Quelle zu erstellen und Ihre Funktion mit einem einzelnen CLI-Befehl zu erstellen. In diesem Szenario lädt Code Engine Ihren Quellcode und Ihr Codepaket in IBM Cloud® Container Registryhoch.

    Sie könnten sich beispielsweise dafür entscheiden, dass Code Engine Ihren lokalen Quellcode erstellt, während Sie die Entwicklung Ihres Quellcodes für die Funktion vorantreiben. Nachdem das Codepaket ausgereift ist, können Sie Ihre Funktion so aktualisieren, dass sie auf das gewünschte Codepaket verweist. Sie können diesen Prozess nach Bedarf wiederholen.

Benötigen Sie weitere Codebeispiele? Sehen Sie sich die Beispiele für IBM Cloud Code Engine GitHub repoan.