sql >> Database >  >> RDS >> Oracle

Werken met gebeurtenissen in Oracle Cloud Infrastructure Deel 1:basisprincipes van services

Oracle Cloud Infrastructure-evenementen is een service waarmee u een automatiseringsbasis kunt creëren op basis van statuswijziging in een service, of misschien gebaseerd op een soort ontvangen invoer. Laten we nu een stap terug doen en Evenement is het optreden van een bepaalde situatie. Om deze situaties nuttig te laten zijn, moeten gebeurtenissen een soort informatie bevatten, bijvoorbeeld instantienaam, objectnaam, statuscode, enz. De informatie kan de automatisering iets bieden om mee te werken.

Evenementen vormen de basis van serverloze architectuur, soms ook wel event-gedreven architectuur . genoemd . Bovendien zijn evenementen cruciaal voor hedendaagse software-architecturen, omdat ze services kunnen ontkoppelen en helpen bij het maken van asynchrone oproepen van software en schaalprocessen te vergemakkelijken.

Een voorbeeld van een gebeurtenisgestuurde architectuur:

  • Je ontwikkelt een app voor beeldverwerking .
  • Telkens wanneer een nieuwe afbeelding wordt geüpload naar een bucket triggert dit een gebeurtenis .
  • Deze gebeurtenis roept een functie aan die die afbeelding pakken en er een miniatuur van maken van .
  • De miniatuur wordt opgeslagen in een andere emmer.
  • Dit activeert een andere gebeurtenis die een e-mailmelding stuurt naar de klant.

OPMERKING OCI-functie is een serverloze oplossing van OCI, waarmee u software voor één doel kunt uitvoeren zonder hardware of VM's te leveren. De software draait op basis van een gebeurtenis of een geplande taak, het is alsof u functies als een service hebt. Meer van Functies HIER

Om terug te komen op OCI Events, enkele van de belangrijke kenmerken zijn:

  • Gebeurtenisservice gebruikt JSON-object om de gebeurtenisregels te definiëren . Je kunt denken aan een regel zoals het filter dat zal bepalen welke gebeurtenissen belangrijk zijn om te overwegen, om te bepalen wat uw input zal zijn. Kortom, Regels triggeren acties . Een voorbeeld van een regellogica kan zijn:
MATCH event WHERE (
  eventType EQUALS ANY OF (
  com.oraclecloud.computeapi.launchinstance.end
  )
)

Deze gebeurtenis wordt geactiveerd wanneer een nieuwe rekeninstantie wordt gemaakt

Maar...

Waar is het JSON-gedeelte??
Laten we op het evenement zelf een voorbeeld van een evenement zien:

{
  "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"
  }
}

Dit is een voorbeeld van een instantie die zojuist is gemaakt en die de gebeurtenis zal activeren.

  • Je kunt voorwaarden of filters toevoegen om je evenementen verder te verfijnen .

Tijdens de configuratie van een gebeurtenisregel kunt u enkele kenmerken toevoegen om uw resultaten verder te filteren

Over dit voorbeeld we filteren resultaten van het gebeurtenistype, voor wijzigingen alleen op Sandbox en dev compartimenten, de hele logica ziet er als volgt uit:

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

Daarnaast kunnen we Filtervoorwaarden add toevoegen gebaseerd op 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
  )
 )
)

Visueel zoiets als:

Eigenlijk deze gebeurtenis wordt elke keer geactiveerd wanneer een instantie wordt gestart op Sandbox OF ontwikkelaar compartimenten door de gebruiker elopez .

  • Regels die het meest specificeren en actie ondernemen .

Het belangrijkste doel van de regels is om iets uit te lokken wanneer ze worden geactiveerd, anders zijn ze nutteloos.

Acties zijn reacties die zijn gedefinieerd voor overeenkomende gebeurtenissen

Acties kunnen worden gemaakt met:
Meldingen stuur de berichten naar een meldingsservice die deze kan verzenden naar eindpunten die zijn geabonneerd op het onderwerp

Dit kunnen zijn:een e-mailadres, e-mailgroep, slap kanaal, enz.

Streamen met deze service neemt u uw gebeurtenissen op in een gegevensstroom om verdere analyse en informatie over deze gegevens te verkrijgen.

Functies functies kunnen worden uitgevoerd op basis van ontvangen gebeurtenissen. Snel voorbeeld:

u kunt een gebeurtenis hebben die elke keer dat een nieuwe instantie wordt gemaakt, wordt geactiveerd en dit zal een functie uitvoeren die monitoring voor die nieuwe instantie configureert.

  • U moet machtigingen toevoegen zodat de Evenementen-service de actieservices kan aanroepen .

Houd rekening met elke actie wordt standaard geweigerd op OCI, dus u moet een beleid maken waarmee de Events-service de acties kan uitvoeren.

De basisrechten die u nodig heeft, zijn:

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

Dit is voor de huur maar u kunt het toewijzen aan een specifiek compartiment

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

Meer over compartimenten HIER


  1. Waarom behandelt Oracle 9i een lege string als NULL?

  2. Wijzig decimaalteken in MySQL

  3. FOUT:toestemming geweigerd voor reeks cities_id_seq met Postgres

  4. Waarom kan ik geen alias gebruiken in een count(*)-kolom en ernaar verwijzen in een hebbende clausule?