Functions: Erste Schritte mit der CLI

In diesem Tutorial richten Sie mit einem Oracle Cloud Infrastructure-Account die Oracle Functions-Entwicklung ein. Anschließend erstellen Sie eine Funktionsanwendung und eine Funktion.

Zu den wichtigsten Aufgaben gehören:

  • Authentifizierungstoken einrichten.
  • Erforderliche Informationen erfassen.
  • VCN einrichten.
  • OCI Registry (OCIR) einrichten.
  • CLI für das Bereitstellen von Funktionen einrichten
  • Fn-Kontext konfigurieren.
  • Anwendung für Ihre Oracle-Funktion erstellen.
  • Funktion erstellen.
  • Funktion bereitstellen.
  • Funktion testen.
Die Bilder zeigen OCI-Komponenten, die zur Ausführung von Oracle-Funktionen verwendet werden.

Weitere Informationen finden Sie hier:

Bevor Sie beginnen

Für eine erfolgreiche Ausführung des Tutorials benötigen Sie Folgendes:

OCI-Accountanforderungen
Softwareanforderungen

1. Erforderliche Informationen erfassen

Erfassen Sie alle Informationen, die Sie für den Abschluss des Tutorials benötigen.

Regions- und Registry-Informationen erfassen

Bereiten Sie die benötigten Informationen in der OCI-Konsole vor.

  1. Suchen Sie unter Regionen und Availability-Domains nach der Regions-ID und dem Regionsschlüssel.

    Beispiel: us-ashburn-1 und iad für Ashburn.

  2. Erstellen Sie einen Registry-Projektnamen, um Ihre Funktionsimages in OCI Registry (OCIR) zu speichern.

    Wenn Sie eine Funktion veröffentlichen, wird ein Docker-Image in OCIR erstellt. Ihr OCIR-Projektname wird Ihren Funktionsimages vorangestellt, damit Sie sie leichter finden. Beispiele:

    • Registry-Projektname: my-func-prj
    • Funktionsname: node-func

    Ihr Funktionsimage würde dann in OCIR unter my-func-prj/node-func gespeichert werden.

Compartment erstellen oder auswählen

Informationen zum Erstellen eines Compartments finden Sie unter Compartment erstellen. Nachdem das Compartment erstellt wurde, speichern Sie die Compartment-OCID.

So rufen Sie die Compartment-OCID aus einem vorhandenen Compartment ab:

  1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Identität und Sicherheit. Klicken Sie unter ID auf Compartments.
  2. Wählen Sie Ihr Compartment aus.
  3. Klicken Sie neben dem Feld "OCID" auf den Link Kopieren.
Autorisierungstoken erstellen

Erstellen Sie ein Autorisierungstoken für die Anmeldung bei OCI Registry. So erstellen Sie ein Autorisierungstoken:

  1. Wählen Sie im Navigationsmenü das Menü Profil Symbol für Profilmenü aus, und wählen Sie je nach der angezeigten Option Benutzereinstellungen oder Mein Profil aus.
  2. Klicken Sie auf Authentifizierungstoken.
  3. Klicken Sie auf Token generieren.
  4. Geben Sie eine Beschreibung ein.
  5. Klicken Sie auf Token generieren.
  6. Kopieren Sie das Token, und speichern Sie es .
    Hinweis

    Speichern Sie das Token direkt nach dem Erstellen. Sie haben später keinen Zugriff mehr darauf.
Informationen erfassen

Erfassen Sie alle Informationen, die Sie für den Abschluss des Tutorials benötigen. Kopieren Sie die folgenden Informationen in Notepad.

  1. Region: <region-identifier>

    Beispiel: us-ashburn-1.

  2. Regionsschlüssel: <region-key>

    Beispiel: iad.

  3. Registry-Projektname: <your-project-name>

    Beispiel: my-func-prj.

  4. Compartment-ID: <compartment-id>

    Beispiel: ocid1.compartment.oc1.aaaaaaa...

  5. Auth-Token: <auth-token>

    Beispiel: ABC.1aBC...

  6. Name des Mandanten: <tenancy-name>

    Aus Ihrem Benutzeravatar. Beispiel: mytenancyname

  7. Mandanten-OCID: <tenancy-ocid>

    Gehen Sie in Ihrem Benutzeravatar auf Mandant: <your-tenancy>, und kopieren Sie die OCID. Beispiel: ocid1.tenancy.oc1.aaaaaaa...

  8. Benutzername: <user-name>

    Aus Ihrem Benutzeravatar.

2. Virtuelles Cloud-Netzwerk (VCN) erstellen

Richten Sie ein VCN ein, um Ihre Linux-Instanz mit dem Internet zu verbinden. Sie konfigurieren alle Komponenten, die zum Erstellen des virtuellen Netzwerks erforderlich sind.

VCN-Assistenten ausführen
  1. Klicken Sie auf das Oracle Cloud-Symbol, um zur Hauptlandingpage zu gelangen.
    • Scrollen Sie nach unten zu Ressourcen starten.
    • Wählen Sie Netzwerk über einen Assistenten einrichten aus.
  2. Wählen Sie im Workflow zum Starten des VCN-Assistenten die Option VCN mit Internetverbindung erstellen aus, und klicken Sie anschließend auf VCN-Assistenten starten.
  3. Geben Sie im Konfigurationsdialogfeld den VCN-Namen für Ihr VCN ein. Als Compartment ist bereits das letzte Compartment ausgewählt, in dem Sie gearbeitet haben, oder der Standardwert <your-tenancy> (root).
  4. Behalten Sie im Abschnitt VCN und Subnetze konfigurieren die Standardwerte für die CIDR-Blöcke bei:
    • VCN-CIDR-BLOCK: 10.0.0.0/16
    • ÖFFENTLICHER SUBNETZ-CIDR-BLOCK: 10.0.0.0/24
    • PRIVATER SUBNETZ-CIDR-BLOCK: 10.0.1.0/24
    Hinweis

    Beachten Sie, dass öffentliche und private Subnetze unterschiedliche Netzwerkadressen haben.
  5. Deaktivieren Sie für "DNS-Auflösung" die Option DNS-Hostnamen in diesem VCN verwenden.
  6. Klicken Sie auf Weiter.

    Das Dialogfeld VCN mit Internetverbindung erstellen mit einer Bestätigung aller eingegebenen Werte wird angezeigt (hier nicht dargestellt).

  7. Um Ihr VCN zu erstellen, klicken Sie auf Erstellen.

    Das Dialogfeld Ressourcen erstellen wird angezeigt (hier nicht dargestellt), in dem alle erstellten VCN-Komponenten angezeigt werden.

Sicherheitsregel zum VCN hinzufügen
  1. Klicken Sie auf VM-Netzwerk anzeigen, um das neue VCN anzuzeigen.

    Das neue VCN wird angezeigt. Jetzt müssen Sie eine Sicherheitsregel hinzufügen, um HTTP-Verbindungen auf Port 80 zuzulassen. Das ist der Standardport für Ihre Anwendungen.

  2. Wenn das neue VCN angezeigt wird, klicken Sie auf den öffentlichen Subnetzlink.

    Die Informationen zum öffentlichen Subnetz werden unten auf der Seite mit den Sicherheitslisten angezeigt. Ein Link zur Standardsicherheitsliste für Ihr VCN wird angezeigt.

  3. Klicken Sie auf den Link Standardsicherheitsliste.

    Die Standard-Ingressregeln für das VCN werden angezeigt.

  4. Klicken Sie auf Ingress-Regeln hinzufügen.

    Das Dialogfeld Ingress-Regeln hinzufügen wird angezeigt.

  5. Geben Sie die folgenden Informationen für die Ingress-Regel ein. Klicken Sie nach der Eingabe aller Daten auf Ingress-Regeln hinzufügen.

    Geben Sie die Ingress-Regel wie folgt ein:

    • zustandslos: Aktiviert
    • Quelltyp: CIDR
    • Quell-CIDR: 0.0.0.0/0
    • IP-Protokoll: TCP
    • Quellportbereich: (leer lassen)
    • Zielportbereich: 80
    • Beschreibung: VCN für Anwendungen

    Wenn Sie auf Ingress-Regel hinzufügen klicken, sind HTTP-Verbindungen zu Ihrem öffentlichen Subnetz zulässig.

Hinweis

Um einen anderen Port zu öffnen, ersetzen Sie 80 im letzten Schritt durch die Portnummer.

Sie haben erfolgreich ein VCN erstellt, das Ihre Anwendungen über das Internet verfügbar macht.

3. OCI-Befehlszeilenschnittstelle einrichten

Damit Sie auf Ihrem lokalen Rechner Funktionen entwickeln können, müssen Sie die OCI-Befehlszeilenschnittstelle (CLI) einrichten. In diesem Abschnitt wird davon ausgegangen, dass Sie Docker und Python 3.6+ sowie pip3 bereits installiert haben.

Führen Sie die Schritte in den folgenden drei Abschnitten aus, um die Oracle Functions-Entwicklung auf Ihrem lokalen Rechner mit der CLI zu aktivieren. Eine detaillierte Erläuterung der einzelnen Schritte finden Sie unter: Oracle Functions in einer lokalen Entwicklungsumgebung einrichten.

CLI mit Python einrichten

Durch die Einrichtung der CLI können Sie Ihre Funktionen und Funktionsanwendungen von Ihrem Rechner aus in OCI Registry bereitstellen. Installieren Sie zunächst die CLI mit dem Feature "Virtuelle Umgebung" von Python.

  1. Installieren Sie virtualenv:

    Über eine virtuelle Umgebung können Sie Abhängigkeiten für Ihr Projekt verwalten. Jedes Projekt kann sich in einer eigenen virtuellen Umgebung befinden, um unabhängige Gruppen von Python-Librarys zu hosten. Installieren Sie virtualenv und virtualenvwrapper.

    1. Ubuntu:
      sudo pip3 install virtualenv
      sudo pip3 install virtualenvwrapper
    2. Oracle Linux: Wenn Sie ein OCI Oracle Linux 7.8-Image verwenden, sind Python 3.6 und pip3 standardmäßig enthalten. Wenn Sie ein anderes Oracle Linux-Image verwenden, finden Sie unten die Befehle zur Installation des Oracle Linux-Entwickler-Repositorys zusammen mit Python 3.6. Wenn Python 3.6 bereits in Ihrem Image installiert ist, überspringen Sie die ersten beiden Befehle, und gehen Sie direkt zum pip3-Befehl.
      sudo yum install oracle-epel-release-el7
      sudo yum install python36
      sudo pip3 install virtualenv
      sudo pip3 install virtualenvwrapper
    3. MacOS: Wenn Sie Python 3 für MacOS installieren, wird pip3 installiert, sodass Sie Module mit pip3 installieren können.
      brew install python3
      pip3 install pipenv
    Hinweis

    Möglicherweise müssen Sie mehrmals "y" eingeben, um die Packages zu akzeptieren, die auf der VM installiert werden.
  2. Erstellen Sie ein Verzeichnis, um Ihre virtuellen Umgebungen zu speichern. Beispiel: mkdir ~/envs erstellt ein envs-Verzeichnis in Ihrem Home-Verzeichnis.
  3. Richten Sie den Wrapper für die virtuelle Umgebung in .bashrc ein.

    Aktualisieren Sie die Datei:

    sudo vi .bashrc
    Hinweis

    Der Pfad zur ausführbaren Python-Datei und zu virtualwrapper.sh kann je nach Linux-Distribution oder Betriebssystem unterschiedlich sein. Stellen Sie sicher, dass Sie den richtigen Pfad mit dem Befehl which verwenden.

    Hängen Sie in der Datei folgenden Text an, und speichern Sie die Datei:

    # set up Python env
    export WORKON_HOME=~/envs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=' -p /usr/bin/python3 '
    source /usr/local/bin/virtualenvwrapper.sh

    Aktivieren Sie die vorherigen Befehle im aktuellen Fenster.

    source ~/.bashrc
  4. Starten Sie eine virtuelle Umgebung.
    mkvirtualenv cli-app
    Es sollte in etwa Folgendes angezeigt werden: (cli-app) ubuntu@<ubuntu-instance-name>:~$
  5. Installieren Sie die CLI.
    pip3 install oci-cli
CLI-Verbindung einrichten

Richten Sie die CLI so ein, dass sie eine Verbindung zu OCI-Services herstellen kann.

  1. Richten Sie die CLI-Konfigurationsdatei ein.
    oci setup config

    Geben Sie Basisinformationen ein (siehe Schritt "Erforderliche Informationen erfassen"):

    • Speicherort für Ihre Konfiguration [$HOME/.oci/config]: <take-default>
    • Benutzer-OCID: <user-ocid>
    • Mandanten-OCID: <tenancy-ocid>
    • Region (z.B. us-ashburn-1): <region-identifier>

    Richten Sie OpenSSL-API-Verschlüsselungsschlüssel ein:

    • Neues RSA-Schlüsselpaar für API-Signatur generieren? [Y/n]: Y
    • Verzeichnis für Ihre Schlüssel [$HOME/.oci]: <take-default>
    • Name für Ihren Schlüssel [oci_api_key] <take-default>
    Hinweis

    Ihr Private Key ist oci_api_key.pem, und Ihr Public Key ist oci_api_key_public.pem.
  2. Kopieren Sie den Public Key.
    Geben Sie im Terminal Folgendes ein:
    cat $HOME/.oci/oci_api_key_public.pem
  3. Fügen Sie den Public Key zu Ihrem Benutzeraccount hinzu.
    • Wählen Sie im Navigationsmenü das Menü Profil Symbol für Profilmenü aus, und wählen Sie je nach der angezeigten Option Benutzereinstellungen oder Mein Profil aus.
    • Klicken Sie auf der Seite Benutzereinstellungen unter Ressourcen auf API-Schlüssel.
    • Klicken Sie auf Public Key hinzufügen.
    • Wählen Sie Public Keys einfügen aus.
    • Wert aus vorherigem Schritt einfügen, einschließlich der Zeilen mit BEGIN PUBLIC KEY und END PUBLIC KEY
    • Klicken Sie auf Hinzufügen.
    Sie haben jetzt die CLI jetzt so eingerichtet, dass sie mit Ihrem Benutzeraccount eine Verbindung zu Ihrem Mandanten herstellen kann.
  4. Testen Sie die Installation:
    oci os ns get

    Wenn alles richtig eingerichtet ist, wird Ihr Namespace angezeigt.

  5. Deaktivieren Sie die virtuelle Umgebung:
    deactivate

    Das Präfix (cli-app) in Ihrer Umgebung wird nicht mehr angezeigt.

    Hinweis

    • Wenn Sie die CLI verwenden möchten, aktivieren Sie sie mit workon cli-app.
    • Wenn Sie Projektnamen ändern, deaktiviert workon die Umgebung, in der Sie sich derzeit befinden. Auf diese Weise können Sie schnell zwischen Umgebungen wechseln.
Fn-Client einrichten

Damit Sie auf Ihrem lokalen Rechner Funktionen entwickeln können, müssen Sie den Fn-Client installieren. Mit Fn können Sie Funktionen und Anwendungen erstellen sowie Funktionen in OCI Registry bereitstellen.

  1. Installieren Sie den Fn-Client.

    Mit dem Fn-Client wird Oracle Functions erstellt, verwaltet und bereitgestellt. So installieren Sie den Client:

    Befehlszeilenoption für Linux, MacOS und Windows 10 Update 2004 (WSL 2.0):

    Geben Sie Folgendes ein:

    curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh
                        
    Hinweis

    Führen Sie den Installationsbefehl regelmäßig neu aus, um ein Upgrade auf die neueste Version von Fn durchzuführen.

    MacOS mit Homebrew:

    Geben Sie Folgendes ein:

    brew install fn
    Hinweis

    Fn wird als Teil der normalen Homebrew-Upgrades aktualisiert: brew upgrade.
  2. Testen Sie die Fn-Installation.

    Geben Sie Folgendes ein: fn version

    Der Befehl gibt in etwa den folgenden Text zurück:

    Client version is latest version: 0.6.3
    Server version: ?    
                        
    Hinweis

    Die Antwort gibt an, dass Sie die aktuelle Version installiert haben und dass der Server von Fn Project nicht auf Ihrem lokalen Rechner ausgeführt wird.

4. OCI Registry für Functions vorbereiten

Als Nächstes melden Sie Docker bei OCI Registry (OCIR) an.

Docker bei OCIR anmelden
  1. Rufen Sie die zuvor erfassten Informationen ab.
  2. Öffnen Sie ein Terminalfenster.
  3. Melden Sie sich bei OCIR an:
    docker login <region-key>.ocir.io

    Sie werden zur Eingabe Ihres Anmeldenamens und Kennwortes aufgefordert.

    • Benutzer: <tenancy-name>/<user-name>
    • Kennwort: <auth-token>

Sie haben Ihre Instanz bei OCIR angemeldet.

5. Functions konfigurieren

Damit Sie Oracle Functions verwenden können, müssen Sie den Fn-Anwendungskontext konfigurieren. Der Kontext speichert die Werte, die für die Verbindung mit dem Oracle Functions-Service erforderlich sind.

Fn-Kontext konfigurieren

Verwenden Sie die zuvor erfassten Informationen für Ihre Konfigurationswerte.

  1. Öffnen Sie eine Terminalinstanz.
  2. Rufen Sie eine Liste der Fn-Kontexte ab.

    fn list context

    Der Kontext default ist ausgewählt.

  3. Erstellen Sie einen Fn-Kontext für Oracle Functions. <region-identifier> ist ein passender Name für Ihren Kontext.

    Beispielbefehl: fn create context <region-identifier> --provider oracle

    Beispiel: fn create context us-phoenix-1 --provider oracle

  4. Verwenden Sie den von Ihnen erstellten Kontext.

    Beispiel: fn use context us-phoenix-1

  5. Legen Sie das Compartment für Oracle Functions fest.

    Beispiel: fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaa...

  6. Definieren Sie die API-URL für Ihre Oracle Functions-Region.

    Beispiel: fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com

    Hinweis

    Die API-Endpunkte finden Sie unter API-Endpunkte von Oracle Functions.
  7. Legen Sie die URL für Ihr Registry-Repository fest.

    Beispielbefehl: fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name>

    Beispiel: fn update context registry phx.ocir.io/my-tenancy/myproject/repo

Hinweis

Wenn Sie mehrere Profile für die CLI verwenden, müssen Sie einen oracle.profile-Wert festlegen.

Beispiel: fn update context oracle.profile <profile-name>

Sie haben Fn für die Verbindung mit dem Oracle Functions-Service konfiguriert.

Hinweis

Kontext anzeigen/ bearbeiten

Ihre Fn-Kontextdateien befinden sich im Verzeichnis ~/.fn/contexts. Jeder Kontext wird in einer .yaml-Datei gespeichert. Beispiel: Die Datei us-phoenix-1.yaml könnte wie folgt aussehen:

api-url: https://functions.us-phoenix-1.oci.oraclecloud.com
oracle.compartment-id: ocid1.compartment.oc1..aaaaaaa...
provider: oracle
registry: phx.ocir.io/my-tenancy/myproject/repo

Sie können die Datei bei Bedarf direkt mit einem Editor bearbeiten.

Eine detaillierte Erläuterung der einzelnen Schritte finden Sie unter: Kurzanleitung "Oracle Functions in a Local Dev Environment"

6. Funktion erstellen und bereitstellen

Erstellen Sie nach Abschluss der Konfiguration eine Funktion, und stellen Sie diese bereit.

Anwendung erstellen

Eine Anwendung ist der Hauptspeichercontainer für Funktionen. Jede Funktion muss über eine Anwendung für das Deployment verfügen. So erstellen Sie die Anwendung:

  1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Entwicklerservices. Klicken Sie unter Funktionen auf Anwendungen.
  2. Klicken Sie auf Anwendung erstellen.

    Geben Sie die Formulardaten ein.

    • Name: <your-app-name>
    • VCN: <your-VCN>
    • Subnetze: <your-public-subnet> oder <your-private-subnet>
    Hinweis

    Wählen Sie entweder ein öffentliches oder ein privates Subnetz aus.
  3. Klicken Sie auf Erstellen.

Ihre Anwendung wird erstellt.

Funktion erstellen und bereitstellen

Wählen Sie eine der folgenden Sprachen aus, um eine Funktion zu erstellen und bereitzustellen. Wenn Sie möchten, können Sie alle drei auswählen.

Java-Funktionen erstellen und bereitstellen

Nachdem Ihre Anwendung erstellt wurde, können Sie eine Java-Funktion bereitstellen. So erstellen Sie eine "Hello World"-Java-Funktion:

Hinweis

Sie können die folgenden Schritte nur ausführen, wenn Java 8+ installiert ist.
  1. Öffnen Sie ein Terminal.
  2. Erstellen Sie ein Verzeichnis zum Speichern Ihrer Funktionen, und wechseln Sie in dieses Verzeichnis.
    mkdir my-dir-name
    cd my-dir-name                        
                        
  3. Erstellen Sie eine "Hello World"-Java-Funktion mit Fn.
    fn init --runtime java my-func-name

    Mit diesem Befehl wird ein Verzeichnis namens my-func-name erstellt. Es enthält mehrere Dateien.

    • func.yaml - Funktionskonfigurationsdatei.
    • pom.xml - Maven-Build-Datei.
    • src/main/java/com/example/fn/HelloFunction.java - eigentliche Funktionsdatei.
  4. Wechseln Sie in das Verzeichnis.
  5. Stellen Sie die Funktion bereit.
    fn -v deploy --app your-app-name

    Wenn die Docker-Images erstellt, per Push an OCIR übertragen und schließlich in Oracle Functions bereitgestellt werden, werden verschiedene Meldungen angezeigt.

  6. Rufen Sie die Funktion auf.
    fn invoke your-app-name my-func-name

    Es wird Folgendes zurückgegeben: Hello, world!

  7. Rufen Sie die Funktion mit einem Parameter auf.
    echo -n "Bob" | fn invoke your-app-name my-func-name

    Es wird Folgendes zurückgegeben: Hello, Bob!

  8. Wenn Sie eine Verbindung zu Ihrer Funktion über das Internet herstellen möchten, müssen Sie den Aufrufendpunkt der Funktion abrufen. Um den Aufrufendpunkt zu finden, verwenden Sie den Befehl inspect.
    fn inspect function your-app-name my-func-name
  9. Prüfen Sie die Ergebnisse des Befehls inspect. Beachten Sie, dass die Aufrufendpunkt-URL im Abschnitt annotations der zurückgegebenen JSON-Daten enthalten ist.
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke",
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaa...",
            "__comment":"Remaining output left out for brevity",
    
  10. Mit der von inspect zurückgegebenen URL können Sie die Funktion aufrufen. Da für Funktionen Anforderungen digital signiert werden müssen, wird für dieses Beispiel der Befehl oci raw-request verwendet.
    oci raw-request --http-method POST --request-body "" --target-uri https://https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke

    Der Befehl gibt Folgendes zurück:

    {
        "data": "Hello, world!",
        "headers": {
            "Content-Length": "13",
            "Content-Type": "text/plain",
            "Date": "Tue, 20 Oct 2020 00:53:08 GMT",
            "Fn-Call-Id": "11111111111",
            "Fn-Fdk-Version": "fdk-java/1.0.111 (jvm=OpenJDK 64-Bit Server VM, jvmv=11.0.8)",
            "Opc-Request-Id": "1111111/11111"
        },
        "status": "200 OK"
    }
    Hinweis

    Sie können mit Tools wie curl eine Verbindung zu einem Functions-Endpunkt herstellen. Aus Sicherheitsgründen ist das Skript jedoch komplex. Alternativ können Sie den OCI-CLI-Befehl raw-request verwenden. Siehe Funktionen aufrufen: Signierte Anforderung mit raw-request an eine Funktion senden.

Sie haben erfolgreich eine Java-Funktion bereitgestellt und getestet.

Python-Funktion erstellen und bereitstellen

Nachdem Ihre Anwendung erstellt wurde, können Sie eine Python-Funktion bereitstellen. So erstellen Sie eine "Hello World"-Python-Funktion:

  1. Öffnen Sie ein Terminal.
  2. Erstellen Sie ein Verzeichnis zum Speichern Ihrer Funktionen, und wechseln Sie in dieses Verzeichnis.
    mkdir my-dir-name
    cd my-dir-name                        
                        
  3. Erstellen Sie eine "Hello World"-Python-Funktion mit Fn.
    fn init --runtime python my-func-name

    Mit diesem Befehl wird ein Verzeichnis namens my-func-name erstellt. Es enthält mehrere Dateien.

    • func.yaml - Funktionskonfigurationsdatei.
    • requirements.txt - Liste der erforderlichen Python-Librarys.
    • func.py - eigentliche Funktionsdatei.
  4. Wechseln Sie in das Verzeichnis.
  5. Stellen Sie die Funktion bereit.
    fn -v deploy --app your-app-name

    Wenn die Docker-Images erstellt, per Push an OCIR übertragen und schließlich in Oracle Functions bereitgestellt werden, werden verschiedene Meldungen angezeigt.

  6. Rufen Sie die Funktion auf.
    fn invoke your-app-name my-func-name

    Es wird Folgendes zurückgegeben: {"message": "Hello World"}

  7. Rufen Sie die Funktion mit einem Parameter auf.
    echo -n '{"name":"Bob"}' | fn invoke your-app-name my-func-name

    Es wird Folgendes zurückgegeben: {"message": "Hello Bob"}

  8. Wenn Sie eine Verbindung zu Ihrer Funktion über das Internet herstellen möchten, müssen Sie den Aufrufendpunkt der Funktion abrufen. Um den Aufrufendpunkt zu finden, verwenden Sie den Befehl inspect.
    fn inspect function your-app-name my-func-name
  9. Prüfen Sie die Ergebnisse des Befehls inspect. Beachten Sie, dass die Aufrufendpunkt-URL im Abschnitt annotations der zurückgegebenen JSON-Daten enthalten ist.
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke",
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaa...",
            "__comment":"Remaining output left out for brevity",
    
  10. Mit der von inspect zurückgegebenen URL können Sie die Funktion aufrufen. Da für Funktionen Anforderungen digital signiert werden müssen, wird für dieses Beispiel der Befehl oci raw-request verwendet.
    oci raw-request --http-method POST --request-body "" --target-uri https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke

    Der Befehl gibt Folgendes zurück:

    {
        "data": "Hello World",
        "headers": {
            "Content-Length": "24",
            "Content-Type": "application/json",
            "Date": "Tue, 20 Oct 2020 00:53:08 GMT",
            "Fn-Call-Id": "11111111111",
            "Fn-Fdk-Version": "fdk-python/0.1.18",
            "Opc-Request-Id": "1111111/11111"
        },
        "status": "200 OK"
    }
    Hinweis

    Sie können mit Tools wie curl eine Verbindung zu einem Functions-Endpunkt herstellen. Aus Sicherheitsgründen ist das Skript jedoch komplex. Alternativ können Sie den OCI-CLI-Befehl raw-request verwenden. Siehe Funktionen aufrufen: Signierte Anforderung mit raw-request an eine Funktion senden.

Sie haben erfolgreich eine Python-Funktion bereitgestellt und getestet.

Node-Funktion erstellen und bereitstellen

Nachdem Ihre Anwendung erstellt wurde, können Sie eine Node-Funktion bereitstellen. So erstellen Sie eine "Hello World"-Node-Funktion:

Hinweis

Sie können die folgenden Schritte nur ausführen, wenn Node.js 10+ installiert ist.
  1. Öffnen Sie ein Terminal.
  2. Erstellen Sie ein Verzeichnis zum Speichern Ihrer Funktionen, und wechseln Sie in dieses Verzeichnis.
    mkdir my-dir-name
    cd my-dir-name                        
                        
  3. Erstellen Sie eine "Hello World"-Node-Funktion mit Fn.
    fn init --runtime node my-func-name

    Mit diesem Befehl wird ein Verzeichnis namens my-func-name erstellt. Es enthält mehrere Dateien.

    • func.yaml - Funktionskonfigurationsdatei.
    • package.json - NPM-Build-Datei.
    • func.js - eigentliche Funktionsdatei.
  4. Wechseln Sie in das Verzeichnis.
  5. Stellen Sie die Funktion bereit.
    fn -v deploy --app your-app-name

    Wenn die Docker-Images erstellt, per Push an OCIR übertragen und schließlich in Oracle Functions bereitgestellt werden, werden verschiedene Meldungen angezeigt.

  6. Rufen Sie die Funktion auf.
    fn invoke your-app-name my-func-name

    Es wird Folgendes zurückgegeben: {"message":"Hello World"}

  7. Rufen Sie die Funktion mit einem Parameter auf.
    echo -n '{"name":"Bob"}' | fn invoke your-app-name my-func-name

    Es wird Folgendes zurückgegeben: {"message":"Hello Bob"}

  8. Wenn Sie eine Verbindung zu Ihrer Funktion über das Internet herstellen möchten, müssen Sie den Aufrufendpunkt der Funktion abrufen. Um den Aufrufendpunkt zu finden, verwenden Sie den Befehl inspect.
    fn inspect function your-app-name my-func-name
  9. Prüfen Sie die Ergebnisse des Befehls inspect. Beachten Sie, dass die Aufrufendpunkt-URL im Abschnitt annotations der zurückgegebenen JSON-Daten enthalten ist.
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke",
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaa...",
            "__comment":"Remaining output left out for brevity",
    
  10. Mit der von inspect zurückgegebenen URL können Sie die Funktion aufrufen. Da für Funktionen Anforderungen digital signiert werden müssen, wird für dieses Beispiel der Befehl oci raw-request verwendet.
    oci raw-request --http-method POST --request-body "" --target-uri https://https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke

    Der Befehl gibt Folgendes zurück:

    {
        "data": "Hello World",
        "headers": {
            "Content-Length": "23",
            "Content-Type": "application/json",
            "Date": "Tue, 22 Oct 2020 00:53:08 GMT",
            "Fn-Call-Id": "11111111111",
            "Fn-Fdk-Version": "fdk-node/0.1.18 (njsv=v11.15.0)",
            "Opc-Request-Id": "1111111/11111"
        },
        "status": "200 OK"
    }
    Hinweis

    Sie können mit Tools wie curl eine Verbindung zu einem Functions-Endpunkt herstellen. Aus Sicherheitsgründen ist das Skript jedoch komplex. Alternativ können Sie den OCI-CLI-Befehl raw-request verwenden. Siehe Funktionen aufrufen: Signierte Anforderung mit raw-request an eine Funktion senden.

Sie haben erfolgreich eine Node-Funktion bereitgestellt und getestet.

7. Funktionsinformationen prüfen

Sobald Ihre Funktionen ausgeführt werden, sind Informationen zu ihnen in der OCI-Konsole verfügbar.

Funktionsimages in OCIR anzeigen

Beim Deployment wird die Funktion hochgeladen und in OCIR gespeichert. Sie können zu OCIR navigieren und die Funktionsimages prüfen.

  1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Entwicklerservices. Klicken Sie unter Container und Artefakte auf Container Registry.
  2. Suchen Sie nach <your-repository-project-name>.
  3. Unter Ihrem Projektnamen wird für jede von Ihnen bereitgestellte Funktion ein Eintrag angezeigt.
  4. Klicken Sie auf den Link neben einem Image, zu dem Sie Informationen anzeigen möchten.
Funktionsausführungsinformationen anzeigen

Sobald Sie eine Funktion ausführen, können Sie Metriken zu dieser Funktion anzeigen.

  1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Entwicklerservices. Klicken Sie unter Funktionen auf Anwendungen.

    Ihre Anwendungen werden auf der Seite aufgeführt.

  2. Klicken Sie auf den Link zur Anwendung, die Sie erstellt haben.
  3. Klicken Sie auf den Link zur Funktion, die Sie prüfen möchten.

    Es werden Metrikinformationen zu Ihrer Funktion angezeigt.

Logginginformationen aktivieren und anzeigen

So aktivieren Sie das Logging für eine Anwendung:

  1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Entwicklerservices. Klicken Sie unter Funktionen auf Anwendungen.
  2. Klicken Sie auf den Link zur Anwendung, die Sie erstellt haben.
  3. Klicken Sie auf der linken Seite der Anwendungsseite auf den Link Logs.
  4. Klicken Sie auf Deaktiviert, um das Logging für Ihre Anwendung zu aktivieren.
  5. Das Dialogfeld Log aktivieren wird angezeigt. Geben Sie die folgenden Informationen ein:
    • Compartment: <your-compartment-name>
    • Loggruppe: Übernehmen Sie den Standardwert Auto-Create a Default Log Group.
    • Logname: <take-default>
    • Logerhaltung: <take-default>
    • Klicken Sie auf Log aktivieren.

      Warten Sie einen Moment, bis das Log erstellt wird.

Um das Log anzuzeigen, klicken Sie auf den durch die vorangegangenen Schritte erstellten Link mit dem Lognamen.