Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Arbeiten mit Ereignissen in Oracle Cloud Infrastructure Teil 1:Servicegrundlagen

Oracle Cloud Infrastructure-Ereignisse ist ein Dienst, mit dem Sie eine Automatisierung basierend auf Zustandsänderungen in einem Dienst oder möglicherweise basierend auf einer Art von erhaltenem Input erstellen können. Gehen Sie nun einen Schritt zurück und Ereignis ist das Eintreten einer bestimmten Situation. Damit diese Situationen nützlich sind, müssen Ereignisse bestimmte Informationen enthalten, z. B. Instanzname, Objektname, Statuscode usw. Die Informationen können der Automatisierung etwas bieten, mit dem sie arbeiten kann.

Veranstaltungen sind die Basis der serverlosen Architektur, die manchmal auch als ereignisgesteuerte Architektur bezeichnet wird . Darüber hinaus sind Ereignisse für moderne Softwarearchitekturen von entscheidender Bedeutung, da sie die Entkopplung von Diensten ermöglichen und dazu beitragen, Software asynchrone Aufrufe zu tätigen und Skalierungsprozesse erleichtern.

Ein Beispiel für eine ereignisgesteuerte Architektur:

  • Du entwickelst eine Bildverarbeitungs-App .
  • Jedes Mal, wenn ein neues Bild in einen Bucket hochgeladen wird, löst es ein Ereignis aus .
  • Dieses Ereignis ruft eine Funktion auf die sich dieses Bild schnappen und davon ein Thumbnail erstellen .
  • Das Miniaturbild wird in einem anderen Bucket gespeichert.
  • Dies löst ein weiteres Ereignis aus, das eine E-Mail-Benachrichtigung sendet an den Client.

HINWEIS Die OCI-Funktion ist eine serverlose Lösung von OCI, mit der Sie eine Einzwecksoftware ausführen können, ohne Hardware oder VMs bereitzustellen, die Software wird auf der Grundlage eines Ereignisses oder eines geplanten Auftrags ausgeführt, es ist, als hätten Sie Funktionen als Dienst. Mehr von Funktionen HIER

Um auf OCI Events zurückzukommen, einige der wichtigen Merkmale sind:

  • Ereignisdienst verwendet JSON-Objekt, um die Ereignisregeln zu definieren . Sie können sich eine Regel wie den Filter vorstellen das bestimmt, welche Ereignisse wichtig zu berücksichtigen sind, um zu bestimmen, was Ihre Eingaben sein werden. Grundsätzlich lösen Regeln Aktionen aus . Ein Beispiel für eine Regellogik kann sein:
MATCH event WHERE (
  eventType EQUALS ANY OF (
  com.oraclecloud.computeapi.launchinstance.end
  )
)

Dieses Ereignis wird ausgelöst, wenn eine neue Recheninstanz erstellt wird

Aber...

Wo ist der JSON-Teil??
Sehen Sie sich auf dem Ereignis selbst ein Beispiel für ein Ereignis an:

{
  "eventType": "com.oraclecloud.computeapi.launchinstance.end",
  "cloudEventsVersion": "0.1",
  "eventTypeVersion": "2.0",
  "source": "ComputeApi",
  "eventTime": "2019-08-16T12:07:42.794Z",
  "contentType": "application/json",
  "data": {
    "compartmentId": "ocid1.compartment.oc1..unique_ID",
    "compartmentName": "example_compartment",
    "resourceName": "my_instance",
    "resourceId": "ocid1.instance.oc1.phx.unique_ID",
    "availabilityDomain": "availability_domain",
    "additionalDetails": {
      "imageId": "ocid1.image.oc1.phx.unique_ID",
      "shape": "VM.Standard2.1",
      "type": "CustomerVmi"
    }
  },
  "eventID": "unique_ID",
  "extensions": {
    "compartmentId": "ocid1.compartment.oc1..unique_ID"
  }
}

Dies ist ein Beispiel für eine gerade erstellte Instanz, die das Ereignis auslöst.

  • Sie können Bedingungen oder Filter hinzufügen, um Ihre Ereignisse weiter einzugrenzen .

Während der Konfiguration einer Ereignisregel können Sie einige Attribute hinzufügen, um Ihre Ergebnisse weiter zu filtern

In diesem Beispiel Wir filtern Ergebnisse nach Ereignistyp, nur nach Änderungen in Sandbox und dev Fächern sieht die ganze Logik so aus:

MATCH event WHERE (
  eventType EQUALS ANY OF (
  com.oraclecloud.computeapi.launchinstance.end
  )
  AND (
  compartmentName MATCHES ANY OF (
  Sandbox,
  dev
  )
 )
)

Zusätzlich können wir Filterbedingungen hinzufügen basierend auf Tags

MATCH event WHERE (
  eventType EQUALS ANY OF (
  com.oraclecloud.computeapi.launchinstance.end
  )
  AND (
  compartmentName MATCHES ANY OF (
  Sandbox,
  dev
  )
  definedTags INCLUDES ANY OF (
  Oracle-Tags.CreatedBy.elopez
  )
 )
)

Optisch so etwas wie:

Im Grunde Dieses Ereignis wird jedes Mal ausgelöst, wenn eine Instanz in Sandbox gestartet wird ODER dev Fächer durch den Benutzer elopez .

  • Die meisten Regeln und Aktionen .

Das Hauptziel der Regeln ist es, etwas zu provozieren, wenn sie ausgelöst werden, sonst sind sie nutzlos.

Aktionen sind Antworten, die für übereinstimmende Ereignisse definiert wurden

Aktionen können erstellt werden mit:
Benachrichtigungen Senden Sie die Nachrichten an einen Benachrichtigungsdienst, der sie an Endpunkte senden kann, die das Thema abonniert haben

Dies könnten sein:eine E-Mail-Adresse, eine E-Mail-Gruppe, ein Slack-Kanal usw.

Streamen Mit diesem Dienst nehmen Sie Ihre Ereignisse in einen Datenstrom auf, um weitere Analysen und Informationen zu diesen Daten zu erhalten.

Funktionen Funktionen können basierend auf empfangenen Ereignissen ausgeführt werden. Kurzes Beispiel:

Sie können ein Ereignis haben, das jedes Mal ausgelöst wird, wenn eine neue Instanz erstellt wird, und dies führt eine Funktion aus, die die Überwachung für diese neue Instanz konfiguriert.

  • Sie müssen Berechtigungen hinzufügen, damit der Ereignisdienst die Aktionsdienste aufrufen kann .

Berücksichtigen Jede Aktion wird standardmäßig auf OCI verweigert, daher müssen Sie eine Richtlinie erstellen, die es dem Ereignisdienst erlaubt, die Aktionen auszuführen.

Die grundlegende Erlaubnis, die Sie benötigen, ist:

Allow service cloudEvents to use ons-topic in tenancy
Allow service cloudEvents to use functions-family in tenancy

Dies ist für das Mietverhältnis Sie können es jedoch einem bestimmten Fach zuweisen

Allow service cloudEvents to use ons-topic in compartment DEV
Allow service cloudEvents to use functions-family in compartment DEV

Mehr über Fächer HIER