Fn-Projekt-CLI-Kontext für die Verbindung mit Oracle Cloud Infrastructure erstellen

Erfahren Sie, wie Sie einen Kontext für die Fn-Projekt-CLI erstellen, um eine Verbindung zu Oracle Cloud Infrastructure für die Verwendung mit OCI Functions herzustellen.

Vor der Verwendung von OCI Functions müssen Sie die Fn-Projekt-CLI für eine Verbindung mit Ihrem Oracle Cloud Infrastructure-Mandanten konfigurieren.

Wenn Sie die Fn-Projekt-CLI zum ersten Mal installieren, wird sie für einen lokalen "Entwicklungskontext" konfiguriert. Um die Fn-Projekt-CLI so zu konfigurieren, dass sie nun eine Verbindung zu Ihrem Oracle Cloud Infrastructure-Mandanten herstellt, müssen Sie einen neuen Kontext erstellen. Der Kontext gibt OCI Functions-Endpunkte, die OCID des Compartments, zu dem bereitgestellte Funktionen gehören, sowie die Adresse der Docker-Registry an, an die Images übertragen und abgerufen werden sollen.

Sie können mehrere Kontexte definieren, die jeweils in einer anderen Kontextdatei im YAML-Format gespeichert werden. Standardmäßig werden die einzelnen Kontextdateien im Verzeichnis ~/.fn/contexts gespeichert. Die Datei ~/.fn/config.yaml gibt an, welche Kontextdatei Fn Project verwendet.

Um einen neuen Kontext zu erstellen, können Sie manuell eine neue Kontextdatei erstellen und die Datei ~/.fn/config.yaml manuell bearbeiten, sodass sie auf diese Datei verweist. Alternativ können Sie mit der Fn-Projekt-CLI die neue Kontextdatei interaktiv erstellen und die Fn-Projekt-CLI anweisen, diese Datei zu verwenden, wie unten beschrieben.

Wenn Sie Cloud Shell als Entwicklungsumgebung verwenden, wurden bereits zwei Fn-Projekt-CLI-Kontexte für Sie erstellt (ein Standardkontext und ein Kontext für die aktuelle Region). Weitere Informationen finden Sie in der Dokumentation OCI Functions on Cloud Shell QuickStart Guide. Sie müssen nur Befehle von der Seite Erste Schritte kopieren und in das Cloud Shell-Fenster einfügen:

  • anweisen, dass die Fn-Projekt-CLI den Kontext für die aktuelle Region verwendet
  • um die OCID des Compartments anzugeben, das Eigentümer der bereitgestellten Funktionen ist
  • zur Angabe der Oracle Cloud Infrastructure Registry-Adresse, die Sie mit OCI Functions verwenden möchten

Bei den Anweisungen in diesem Thema wird Folgendes vorausgesetzt:

  • Sie verwenden Cloud Shell nicht als Entwicklungsumgebung
  • Sie verwenden Linux.
  • Sie haben die Schritte unter Fn-Projekt-CLI installieren bereits abgeschlossen

So erstellen Sie eine neue Kontextdatei mit der Fn-Projekt-CLI:

  1. Melden Sie sich als Funktionsentwickler bei Ihrer Entwicklungsumgebung an.

  2. Erstellen Sie in einem Terminalfenster den neuen Fn-Projekt-CLI-Kontext für Oracle Cloud Infrastructure, indem Sie Folgendes eingeben:

    fn create context <my-context> --provider oracle

    Dabei ist <my-context> ein Name Ihrer Wahl. Beispiel:

    fn create context johns-oci-context --provider oracle

    Beachten Sie, dass Sie --provider oracle angeben, um die Authentifizierung und Autorisierung mit der Oracle Cloud Infrastructure-Anforderungssignatur, privaten Schlüsseln, Benutzergruppen und Policys, die diesen Benutzergruppen Berechtigungen erteilen, zu aktivieren.

  3. Geben Sie an, dass die Fn-Projekt-CLI den neuen Kontext verwenden soll. Geben Sie dazu Sie Folgendes ein:

    fn use context <my-context>

    Dabei ist <my-context> der Name, den Sie im vorherigen Schritt angegeben haben. Beispiel:

    fn use context johns-oci-context
  4. Konfigurieren Sie den neuen Kontext mit der OCID des Compartments, das Eigentümer der bereitgestellten Funktionen sein soll (Sie haben möglicherweise ein neues Compartment für diesen Zweck erstellt, finden Sie unter Compartments für Netzwerkressourcen und OCI Functions-Ressourcen im Mandanten erstellen, wenn diese noch nicht bereits vorhanden sind):

    fn update context oracle.compartment-id <compartment-ocid>

    Beispiel:

    fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaaaarvdfa72n...
  5. Konfigurieren Sie den neuen Kontext mit dem API-URL-Endpunkt, der beim Aufrufen der API verwendet werden soll. Geben Sie dazu Folgendes ein:

    fn update context api-url <api-endpoint>

    Dabei ist <api-endpoint> einer der Endpunkte in der Liste der Functions-Endpunkte in der Functions-API im Format https://functions.<region-identifier>.oci.oraclecloud.com. Die Datei <region-identifier> in <api-endpoint> ist die ID der Oracle Cloud Infrastructure-Region, in der Sie Funktionen erstellen und bereitstellen möchten. Beispiel: us-phoenix-1.

    Beispiel:

    fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com
  6. Konfigurieren Sie den neuen Kontext mit der Adresse der Docker-Registry (z.B. Oracle Cloud Infrastructure Registry), die Sie mit OCI Functions verwenden möchten. Geben Sie dazu Folgendes ein:

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

    Hierbei gilt:

    • <region-code> ist der Schlüssel der Oracle Cloud Infrastructure Registry-Region. Beispiel: phx für Phoenix. Siehe Verfügbarkeit nach Region.

      Es wird empfohlen, dass die von Ihnen angegebene Docker-Registry in derselben Region liegt wie das Subnetz, in dem Funktionen ausgeführt werden sollen.

    • <tenancy-namespace> ist die automatisch generierte Namespace-Zeichenfolge des Mandanten, in der Repositorys erstellt werden sollen (wie auf der Seite Mandanteninformationen angezeigt). Beispiel: Der Namespace des Mandanten acme-dev kann ansh81vru1zp lauten. Bei einigen älteren Mandanten kann die Namespace-Zeichenfolge mit dem Mandantennamen (vollständig in Kleinbuchstaben) identisch sein (Beispiel: acme-dev).
    • <repo-name-prefix> ist (optional) ein Repository-Namenspräfix, das den Namen der bereitgestellten Funktionen vorangestellt werden soll, um die Namen der Repositorys anzugeben, an die Funktionsimages übertragen werden sollen. Die Verwendung eines Repository-Namenpräfixes kann die Organisation und Kontrolle des Zugriffs auf Repositorys in der Registry erleichtern. Siehe Hinweise zu Repository-Namen und Repository-Namenpräfixen.

    Beispiel:

    fn update context registry phx.ocir.io/ansh81vru1zp/acme-repo
  7. (Optional) Konfigurieren Sie den neuen Kontext mit der OCID des Compartments für Repositorys, in die und aus denen OCI Functions Funktionsimages per Push übertragen und abrufen soll, indem Sie Folgendes eingeben:

    fn update context oracle.image-compartment-id <compartment-ocid>

    Beispiel:

    fn update context oracle.image-compartment-id ocid1.compartment.oc1..aaaaaaaaquqe______z2q
    

    Wenn Sie keinen Wert für oracle.image-compartment-id angeben, überträgt und ruft OCI Functions Images in und aus Repositorys im Root Compartment ab. In beiden Fällen muss eine geeignete Policy-Anweisung vorhanden sein, damit Sie Repositorys im Compartment verwalten können (entweder das mit oracle.image-compartment-id angegebene Compartment oder das Root Compartment). Siehe Policy-Anweisungen, die OCI Functions-Benutzern Zugriff auf Oracle Cloud Infrastructure Registry-Repositorys erteilen.

    OCI Functions erstellt den Namen des Repositorys für ein Funktionsimage, indem das Präfix des Repository-Namens dem Funktionsnamen vorangestellt wird. Repository-Namen sind in allen Compartments im gesamten Mandanten eindeutig. Beachten Sie, dass sich OCI Functions in Bezug auf Compartments und oracle.image-compartment-id beim Push eines Images in ein benanntes Repository wie folgt verhält:

    • Wenn bereits ein Repository mit diesem Namen in dem mit oracle.image-compartment-id angegebenen Compartment vorhanden ist, überträgt OCI Functions das Image erfolgreich in dieses Repository.
    • Wenn ein Repository mit diesem Namen nicht in einem Compartment (einschließlich im Root Compartment) im Mandanten vorhanden ist, erstellt OCI Functions ein neues Repository mit diesem Namen in dem von oracle.image-compartment-id angegebenen Compartment und überträgt das Image erfolgreich an dieses.
    • Wenn ein Repository mit diesem Namen bereits im Mandanten, aber in einem anderen Compartment als dem mit oracle.image-compartment-id angegebenen vorhanden ist, gibt OCI Functions einen Fehler aus. Damit OCI Functions das Image erfolgreich per Push weiterleitet, müssen Sie entweder oracle.image-compartment-id auf die OCID des Compartments des vorhandenen Repositorys setzen oder einen anderen Repository-Namen angeben (indem Sie die Funktion umbenennen oder ein alternatives Repository-Namenspräfix angeben).
  8. (Optional) Prüfen Sie den erstellten Fn-Projekt-CLI-Kontext, indem Sie die Kontextdatei anzeigen. Beispiel: Geben Sie Folgendes ein:

    more ~/.fn/contexts/johns-oci-context.yaml

    Die Kontextdatei enthält:

    api-url: https://functions.us-phoenix-1.oci.oraclecloud.com
    provider: oracle
    registry: phx.ocir.io/ansh81vru1zp/acme-repo
    oracle.image-compartment-id: <compartment-ocid>

Nachdem Sie die Schritte in diesem Thema abgeschlossen haben, fahren Sie mit Kontext für die Fn-Projekt-CLI mit dem Parameter oracle.profile festlegen fort.

Hinweise zu Repository-Namen und Repository-Namenpräfixen

Beim Deployment einer Funktion wird das Funktionsimage in ein Repository in der Registry übertragen, das durch die Einstellung registry: im Fn-Projekt-CLI-Kontext angegeben wird. Der Name des Repositorys entspricht entweder dem Namen der Funktion (d.h. <function-name>) oder dem Namen der Funktion mit einem vorangestellten Repository-Namenspräfix (d.h. <repo-name-prefix>/<function-name>).

Beachten Sie beim Bereitstellen einer Funktion Folgendes. Wenn ein Repository mit dem Namen <function-name> (oder <repo-name-prefix>/<function-name>, wenn Sie ein <repo-name-prefix> angegeben haben) nicht bereits in der Registry vorhanden ist:

  • Wenn die Eigenschaft Repository beim ersten Push im Root Compartment erstellen der Registry auf "true" gesetzt ist, wird ein neues privates Repository im Root Compartment erstellt
  • Wenn die Eigenschaft Repository beim ersten Push im Root Compartment erstellen der Registry auf "false" gesetzt ist, kann kein neues Repository erstellt werden, und der Versuch, das Funktionsimage zu pushen, verläuft nicht erfolgreich.

Wenn die Eigenschaft Repository beim ersten Push im Root Compartment erstellen der Registry auf "false" gesetzt ist und noch kein geeignetes Repository vorhanden ist, führen Sie vor dem Deployment einer Funktion einen der folgenden Schritte aus:

  • Erstellen Sie ein neues Repository mit demselben Namen wie die Funktion, und geben Sie im Fn-Projekt-CLI-Kontext keine <repo-name-prefix> an. Beispiel: Wenn die Funktion hello-world heißt, erstellen Sie ein neues Repository mit dem Namen hello-world.
  • Erstellen Sie eine Funktion mit demselben Namen wie ein vorhandenes Repository, und geben Sie im Fn-Projekt-CLI-Kontext keine <repo-name-prefix> an. Beispiel: Wenn das vorhandene Repository hello-galaxy heißt, benennen Sie die neue Funktion hello-galaxy.
  • Wenn Sie ein Repository-Namenspräfix verwenden möchten, um den Zugriff auf Repositorys zu organisieren und zu kontrollieren, geben Sie im Fn-Projekt-CLI-Kontext eine <repo-name-prefix> an, und erstellen Sie auch ein Repository mit einem Namen, der sowohl das Repository-Namenspräfix als auch den Funktionsnamen enthält. Beispiel: Um Images für eine Funktion namens hello-world in einem Repository namens acme-repo/hello-world zu speichern, geben Sie phx.ocir.io/ansh81vru1zp/acme-repo im Fn-Projekt-CLI-Kontext an, und erstellen Sie auch ein Repository namens acme-repo/hello-world.