Funktion zum Erstellen einer Null-Quota-Policy

Erfahren Sie, wie Sie mit der vordefinierten Funktion "Zero Quota Policy Creator" in OCI Functions eine Quota Policy für Compartments erstellen, um die Erstellung von OCI-Ressourcen zu verhindern. So können Sie Budgets durchsetzen und OCI-Ausgaben verwalten.

Allgemeine Verwendungsszenarios

Erstellen Sie eine Nullquoten-Policy, die das Erstellen von OCI-Ressourcen verhindert, nachdem ein Ausgabenschwellenwert erreicht wurde. Gehen Sie hierzu wie folgt vor:

  • Erstellen Sie ein Budget für ein Compartment und eine Budgetalertregel, um einen Budgetalert basierend auf einem tatsächlichen oder prognostizierten Ausgabenschwellenwert festzulegen. Weitere Informationen zu Budgets finden Sie unter Budgets verwalten.
  • Konfigurieren Sie eine Ereignisregel im Root Compartment, die aus dem Budgetalert ausgelöst wird, und rufen Sie eine Funktion auf, die aus dieser vordefinierten Funktion erstellt wurde. Weitere Informationen zu Ereignisregeln finden Sie unter Regel mit der Konsole erstellen.

Zu den Services, die sich auf die Funktion "Zero Quota Policy Creator" beziehen, gehören:

Geltungsbereich

Zu den Umfangsüberlegungen für diese Funktion gehören:

  • Diese vordefinierte Funktion unterstützt Budgets, die nur für den Compartment-Geltungsbereich erstellt wurden. Weitere Informationen finden Sie unter Budgets verwalten.

Voraussetzungen und Empfehlungen

Im Folgenden finden Sie Best Practices bei der Verwendung dieser vordefinierten Funktion:

  • Legen Sie den vordefinierten Funktionstimeout auf 300 Sekunden fest.
  • Das mit der Anwendung verknüpfte VCN erleichtert den Zugriff auf andere OCI-Services über ein Servicegateway, ein Internetgateway oder ein NAT-Gateway.
  • Erstellen Sie Ereignisregeln nur im Root Compartment.
  • Sowohl Budgets als auch Quoten-Policys sind Features auf Mandantenebene. Konfigurieren Sie diese vordefinierte Funktion in der Hauptregion. Wenn Sie in der Hauptregion konfiguriert sind, verwenden Sie ein Servicegateway in einem VCN.

    Wenn die vordefinierte Funktion in einer anderen Region konfiguriert ist, ist ein Internetgateway oder ein NAT-Gateway erforderlich, um regionsübergreifende Aufrufe auszuführen.

Funktion zum Erstellen einer Zero Quota-Policy konfigurieren

So konfigurieren Sie die Funktion "Zero Quota Policy Creator":

  1. Wählen Sie auf der Seite Vordefinierte Funktionen die Option Ersteller der Policy ohne Quota und dann Funktion erstellen aus.
  2. Konfigurieren Sie Name, Compartment und Anwendung wie folgt:
    • Name: Geben Sie einen Namen Ihrer Wahl für die neue Funktion ein. Der Name muss mit einem Buchstaben oder Unterstrich beginnen und darf nur Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten. Die zulässige Länge beträgt 1–255 Zeichen. Geben Sie keine vertraulichen Informationen ein.

      Um die Funktion in einem anderen Compartment zu erstellen, wählen Sie Compartment ändern aus.

    • Anwendung: Wählen Sie die Anwendung aus, in der Sie die Funktion erstellen möchten.

      Wenn noch keine geeignete Anwendung im aktuellen Compartment vorhanden ist, wählen Sie Neue Anwendung erstellen aus, und geben Sie die folgenden Details an:

      • Name: Ein Name für die neue Anwendung. Geben Sie keine vertraulichen Informationen ein.
      • VCN: Das VCN (virtuelles Cloud-Netzwerk), in dem Funktionen in der Anwendung ausgeführt werden sollen. Wählen Sie optional VCN-Compartment: aus, um ein VCN in einem anderen Compartment auszuwählen.
      • Subnetz: Das Subnetz (oder die Subnetze, bis zu drei) in dem Funktionen ausgeführt werden sollen. Wählen Sie optional Subnetz-Compartment: aus, um ein Subnetz aus einem anderen Compartment auszuwählen.
      • Ausprägung: Die Prozessorarchitektur der Compute-Instanzen, auf denen Funktionen in der Anwendung bereitgestellt und ausgeführt werden sollen. Alle Funktionen in der Anwendung werden auf Compute-Instanzen mit derselben Architektur bereitgestellt und ausgeführt. Das Abbild der Funktion muss die erforderlichen Abhängigkeiten für die ausgewählte Architektur enthalten.
      • Tags: Wenn Sie über Berechtigungen zum Erstellen von Ressourcen verfügen, können Sie auch Freiformtags auf diese Ressource anwenden. Um ein definiertes Tag anzuwenden, benötigen Sie Die Berechtigungen zum Verwenden des Tag-Namespace. Weitere Informationen zum Tagging finden Sie unter Ressourcentags. Wenn Sie nicht sicher sind, ob Tags angewendet werden sollen, überspringen Sie diese Option, oder fragen Sie einen Administrator. Sie können Tags später anwenden.
  3. Konfigurieren Sie die IAM-Policy für vordefinierte Funktionen.

    Standardmäßig erstellt OCI Functions eine dynamische Gruppe und eine IAM-Policy mit den Policy-Anweisungen, die zur Ausführung der vordefinierten Funktion erforderlich sind. Nehmen Sie keine Änderungen vor, um das Standardverhalten zu übernehmen.

    Wenn OCI Functions die dynamische Gruppe und Policy nicht automatisch erstellen soll, wählen Sie Keine dynamische Gruppe und IAM-Policy erstellen aus.

    Wichtig

    Wenn Sie die Option Keine dynamische Gruppe und IAM-Policy erstellen auswählen, müssen Sie die dynamische Gruppe und die IAM-Policy selbst definieren. Weitere Informationen finden Sie unter Berechtigungen.
  4. Konfigurieren Sie den Funktionsspeicher und die Timeoutwerte wie folgt:
    • Arbeitsspeicher (in MB): Der maximale Arbeitsspeicher, den die Funktion während der Ausführung in Megabyte nutzen kann. Dies ist der Speicher, der dem Funktionsbild zur Verfügung steht. (Standard: 256 MB)
    • Timeout (in Sekunden): Die maximale Zeit, für die die Funktion ausgeführt werden kann, in Sekunden. Wenn die Funktion nicht innerhalb der angegebenen Zeit abgeschlossen wird, bricht das System die Funktion ab. (Standardwert: 300)
  5. (Optional) Konfigurieren Sie Provisioned Concurrency, um anfängliche Verzögerungen beim Aufrufen der Funktion zu minimieren, indem Sie eine Mindestanzahl gleichzeitiger Funktionsaufrufe angeben, für die Sie die Ausführungsinfrastruktur ständig verfügbar machen möchten. (Standard: Nicht aktiviert)

    Wenn diese Option ausgewählt ist, geben Sie die Anzahl der bereitgestellten Nebenläufigkeitseinheiten an, die dieser Funktion zugewiesen sind. Standard: 20.

    Weitere Informationen zum bereitgestellten gleichzeitigen Zugriff finden Sie unter Anfängliche Latenz mit bereitgestelltem gleichzeitigem Zugriff reduzieren.

  6. Legen Sie die Funktionskonfigurationsparameter fest, wie unter Konfigurationsparameter beschrieben.
  7. Geben Sie optional beliebige Tags in den Abschnitt Tags ein. Wenn Sie über Berechtigungen zum Erstellen von Ressourcen verfügt, sind Sie auch berechtigt: Freiformtags auf diese Ressource anwenden. Um ein definiertes Tag anzuwenden, benötigen Sie Die Berechtigungen zum Verwenden des Tag-Namespace. Weitere Informationen zum Tagging finden Sie unter Ressourcentags. Wenn Sie nicht sicher sind, ob Tags angewendet werden sollen, überspringen Sie diese Option, oder fragen Sie einen Administrator. Sie können Tags später anwenden.
  8. Klicken Sie auf Erstellen.

Im Dialogfeld "Bereitstellen" werden die Aufgaben zum Bereitstellen der Funktion angezeigt (siehe Vordefiniertes Funktions-Deployment beenden).

Konfigurationsoptionen

Konfigurationsparameter

Name Beschreibung Erforderlich
SERVICE_FAMILY_NAMES Eine durch Komma getrennte Liste der Service-Familiennamen, die in der Quota Policy-Anweisung verwendet werden sollen. Der Standardwert enthält alle Servicefamiliennamen, die den Quota-Service unterstützen. Weitere Informationen finden Sie unter Verfügbare Quoten nach Service. Nein
PBF_LOG_LEVEL Logging-Ebene, Optionen sind DEBUG, INFO, WARN und ERROR. Der Standardwert ist INFO. Nein

Berechtigungen

Für die Ausführung einer Funktion sind bestimmte IAM-Policys erforderlich. Wenn Sie beim Erstellen der Funktion die Option Keine dynamische Gruppe und IAM-Policy erstellen ausgewählt haben, müssen Sie die dynamische Gruppe und die IAM-Policy selbst definieren.

Um die richtigen Policys festzulegen, führen Sie die folgenden Schritte aus:

  • Dynamische Gruppe mit der Regel erstellen:
    ALL {resource.id = '<function_ocid>' , resource.compartment.id = '<compartment_ocid>'}
  • Konfigurieren Sie eine IAM-Policy mit der dynamischen Gruppe:
    Allow dynamic-group <dynamic group name> to read usage-budgets in tenancy
    Allow dynamic-group <dynamic-group-name> to manage quota in tenancy
    Allow dynamic-group <dynamic-group-name> to read limits in tenancy
    Allow dynamic-group <dynamic-group-name> to read compartments in tenancy
Hinweis

Ersetzen Sie <function-ocid> durch die OCID der Funktion, die Sie in den vorherigen Schritten erstellt haben.
Hinweis

Ersetzen Sie <dynamic-group-name> durch den Namen der dynamischen Gruppe, die Sie mit der OCID der Funktion erstellt haben.
Hinweis

Ersetzen Sie <compartment_ocid> durch die OCID des Compartments, das die Funktion enthält.

Diese Funktion wird aufgerufen

Sie können die Funktion wie folgt aufrufen:

  • Erstellen Sie eine Ereignisregel, um die Ausgabenereignisse des Budgetschwellenwerts mit einer Regel abzugleichen, die eine Quoten-Policy erstellt, um die Erstellung neuer Ressourcen zu verhindern.

Antwortbody

  • Zeitstempel: Verwenden Sie UTC, um Zeitzonenprobleme zu vermeiden.
  • Code: Die Funktion gibt einen 200-Code zurück, wenn die Aufgabe erfolgreich abgeschlossen wurde.
  • Status: Die Funktion gibt "Erfolgreich" als Status zurück, wenn die Aufgabe erfolgreich abgeschlossen wurde.
  • Nachricht: Ein JSON-Nachrichtentext, der spezifische Antwortinformationen für die Aufgabe enthält.

Beispiel

Das folgende Beispiel zeigt die JSON-Rückgabedaten:

{
    "startTime": "2023-02-21T05:08:25.275Z",
    "endTime": "2023-02-21T05:08:28.731Z",
    "runTime": "PT3.456S",
    "code": 200,
    "status": "Success",
    "data": {
        "additionalInformation": {
            "Created Quota Policy OCID": "ocid1.quota.oc1..aaaaa..."
        }
    }
}

Fehlersuche

Allgemeine Statuscodes für OCI Functions

In der folgenden Tabelle werden allgemeine OCI Functions-Fehler zusammengefasst, die bei der Arbeit mit vordefinierten Funktionen auftreten können:

Fehlercode Fehlermeldung Maßnahme
200 Erfolgreich -
404 NotAuthorizedOrNotFound Stellen Sie sicher, dass die erforderlichen Policys konfiguriert sind (siehe Ausführen von Fn-Projekt-CLI-Befehlen gibt einen 404-Fehler zurück).
444 Timeout

Die Verbindung zwischen dem Client und OCI Functions wurde während der Funktionsausführung unterbrochen (siehe Wenn Sie eine Funktion aufrufen, meldet der Client einen Timeout, und in den Logs der Funktion wird ein 444-Fehler angezeigt). Ein erneuter Versuch könnte das Problem lösen.

Beachten Sie, dass die meisten Clients einen inneren Timeout von 60 Sekunden aufweisen. Selbst wenn das vordefinierte Funktionstimeout auf 300 Sekunden gesetzt ist, ist möglicherweise Folgendes erforderlich:

  • Bei Verwendung der OCI-CLI: Verwenden Sie --read-timeout 300
  • Bei Verwendung des OCI-SDK: Legen Sie beim Erstellen des Clients den Lesetimeout auf 300 fest
  • Bei Verwendung von DBMS_CLOUD.SEND_REQUEST: Verwenden Sie UTL_HTTP.set_transfer_timeout(300);

Weitere Informationen finden Sie unter Funktionen aufrufen.

502 504 (verschiedene) Die meisten Probleme geben einen 502-Statuscode zurück (siehe Aufrufen einer Funktion gibt eine Meldung "Funktion nicht erfolgreich" und einen 502-Fehler zurück). Ein 502-Fehler mit der Meldung "Fehler beim Empfangen der Funktionsantwort" kann durch Erhöhung der Speicherzuweisung behoben werden. Eine 502 kann gelegentlich auftreten, wenn sich die Funktion in einem vorübergehenden Zustand befindet. Ein erneuter Versuch könnte das Problem lösen.

Um die Ursache weiter zu ermitteln, aktivieren Sie Loggingfeatures für die vordefinierte Funktion (siehe Funktionslogs speichern und anzeigen). Ausführliche Informationen zur Fehlerbehebung bei einer Funktion finden Sie unter Fehlerbehebung bei OCI Functions.

Vordefinierte Funktionsstatuscodes für Policy-Ersteller für Nullquoten

In der folgenden Tabelle sind die Fehler zusammengefasst, die bei der Arbeit mit dieser vordefinierten Funktion auftreten können:

Fehlercode Fehlermeldung Maßnahme
400 Funktions-Payload hat falschen Ereignistyp Prüfen Sie, ob der Ereignistyp "AlertRule - Create" lautet.

Um die Ursache weiter zu ermitteln, aktivieren Sie Loggingfeatures für die vordefinierte Funktion (siehe Funktionslogs speichern und anzeigen).

Tipps zur Loganalyse

Alle vordefinierten Funktionen bieten eine Option zur Angabe der Logging-Ebene als Konfigurationsparameter. Sie können die Logging-Ebene auf DEBUG setzen, um weitere Informationen zu erhalten.

Da eine Anwendung mehrere Funktionen hat, werden die vordefinierten Funktionslogeinträge durch das Präfix "PBF | <PBF NAME>" identifiziert.

Beispiel: Ein Logeintrag für die vordefinierte Funktion "Media Workflow Job Spawner" sieht ungefähr wie folgt aus:

"PBF | Media Workflow Job Spawner | INFO | 2023-02-07T18:06:50.809Z | Fetching details from Events JSON"