Funktionsweise von OCI Functions

Erfahren Sie, wie OCI Functions arbeitet, wenn Sie eine Funktion bereitstellen und wenn Sie eine Funktion aufrufen.

Was geschieht bei der Bereitstellung einer Funktion in OCI Functions?

Wenn Sie den Code für eine Funktion geschrieben haben und dieser bereitgestellt werden kann, können Sie mit einem einzelnen Fn-Projekt-CLI-Befehl alle Bereitstellungsvorgänge nacheinander ausführen:

  • Docker-Image aus der Funktion erstellen
  • Definition der Funktion in der Datei "func.yaml" bereitstellen. Diese enthält:
    • die maximale Zeitdauer, über die die Funktion ausgeführt werden darf.
    • den maximalen Arbeitsspeicher, den die Funktion belegen darf.
  • Image für die angegebene Docker-Registry bereitstellen
  • Funktionsmetadaten (einschließlich Arbeitsspeicher- und Zeitbeschränkungen sowie Link zum Image in der Docker-Registry) auf den Fn-Server hochladen
  • Funktion zu der in der Konsole angezeigten Liste der Funktionen hinzufügen

Der obige Prozess zum Bereitstellen einer Funktion in OCI Functions wird im Diagramm angezeigt.

In dieser Abbildung wird Folgendes dargestellt: Erstellen eines Docker-Images aus einer Funktion, Bereitstellen des Images für eine Docker-Registry, Erstellen der Datei "func.yaml", Hochladen der Funktionsdefinition auf den Fn-Server und Anzeigen dieser Datei in der Konsole.

Beachten Sie, dass Sie nach dem Hochladen des Images in die Docker-Registry das Image aktualisieren müssen. Beispiel: Wenn neue Sprachversionen unterstützt werden (weitere Informationen finden Sie unter Function Development Kits (FDKs)).

Was geschieht beim Aufrufen einer Funktion?

Sie können eine in OCI Functions bereitgestellte Funktion über die folgenden Komponenten aufrufen:

  • Fn-Projekt-CLI.
  • Oracle Cloud Infrastructure-SDKs.
  • Signierte HTTP-Anforderungen an den Aufrufendpunkt der Funktion. Jede Funktion verfügt über einen Aufrufendpunkt.
  • Andere Oracle Cloud-Services (z.B. durch ein Ereignis im Events-Service ausgelöst) oder externe Services.

Wenn eine Funktion zum ersten Mal aufgerufen wird, prüft OCI Functions zuerst die Anforderung mit dem IAM-Service. Wenn die Anforderung Authentifizierungs- und Autorisierungsprüfungen übergibt, übergibt OCI Functions die Anforderung an den Fn-Server, der anhand der Funktionsdefinition:

  • Docker-Image der Funktion identifizieren, die aus der Docker-Registry abgerufen werden soll
  • Funktion ausführen, indem das Image der Funktion als Container auf einer Instanz in einem Subnetz ausgeführt wird, das der Anwendung zugeordnet ist, zu der die Funktion gehört

Wenn die Funktion innerhalb des Containers ausgeführt wird, kann sie Daten aus anderen Ressourcen und Services, die in demselben Subnetz ausgeführt werden, lesen und in diese schreiben (Beispiel: Database as a Service). Die Funktion kann auch Daten aus anderen gemeinsam verwendeten Ressourcen (z.B. Object Storage) und anderen Oracle Cloud-Services auslesen und in diese schreiben. Sie können angeben, wie lange die Funktion maximal ausgeführt werden darf, indem Sie einen Timeout in der Datei "func.yaml" oder in der Konsole festlegen.

OCI Functions speichert die Logs der Funktion in Oracle Cloud Infrastructure oder in einem externen Loggingziel.

Wenn die Ausführung der Funktion beendet und eine inaktive Periode abgelaufen ist, wird der Docker-Container entfernt. Wenn OCI Functions einen weiteren Aufruf für dieselbe Funktion erhält, bevor der Container entfernt ist, wird die zweite Anforderung an denselben aktiven Container weitergeleitet. Wenn OCI Functions einen Aufruf für eine Funktion erhält, die derzeit in einem ausgeführten Container ausgeführt wird, skaliert OCI Functions horizontal, um beide eingehenden Anforderungen zu verarbeiten, und ein zweiter Docker-Container wird gestartet.

OCI Functions zeigt Informationen zu Funktionsaufrufen in Metrikdiagrammen an.

Der obige Prozess zum Aufrufen einer Funktion wird im Diagramm angezeigt.

In dieser Abbildung wird dargestellt, wie Funktionen, die auf dem Fn-Server bereitgestellt werden, mit anderen Oracle Cloud Infrastructure-Services (IAM, Object Storage, DBaaS), Tools (OCI-Konsole, Fn-Projekt-CLI) und externen Services (IaaS, PaaS, SaaS) interagieren. Eine Funktion wird so angezeigt, dass sie als Container auf einer Instanz in einem Subnetz innerhalb eines VCN bereitgestellt wurde.