Oracle
 sql >> Base de données >  >> RDS >> Oracle

Utilisation des événements dans Oracle Cloud Infrastructure Partie 1 :principes de base du service

Événements Oracle Cloud Infrastructure est un service qui vous permet de créer une base d'automatisation sur le changement d'état dans un service, ou peut-être sur la base d'une sorte d'entrée reçue. Maintenant, revenons un peu en arrière, et Événement est la survenance d'une situation particulière. Pour que ces situations soient utiles, les événements doivent être accompagnés d'un certain type d'informations, par exemple, le nom de l'instance, le nom de l'objet, le code d'état, etc. Les informations peuvent fournir à l'automatisation quelque chose avec lequel travailler.

Événements sont la base de l'architecture sans serveur, parfois également appelée architecture pilotée par les événements . De plus, les événements sont cruciaux pour les architectures logicielles contemporaines, car ils permettent de découpler les services, aident à effectuer des appels logiciels asynchrones et faciliter les processus de mise à l'échelle.

Un exemple d'architecture événementielle :

  • Vous développez une application de traitement d'images .
  • Chaque fois qu'une nouvelle image est téléchargée dans un bucket, elle déclenche un événement .
  • Cet événement appelle une fonction qui saisissent cette image et créent une vignette à partir de celle-ci .
  • La vignette est stocké dans un autre compartiment.
  • Cela déclenche un autre événement qui envoie une notification par e-mail au client.

REMARQUE La fonction OCI est une solution sans serveur d'OCI, qui vous permet d'exécuter un logiciel à usage unique sans provisionner de matériel ou de machines virtuelles, le logiciel s'exécute sur la base d'un événement ou d'une tâche planifiée, c'est comme avoir des fonctions en tant que service. Plus d'informations sur les fonctions ICI

Pour en revenir aux événements OCI, certaines des caractéristiques importantes sont :

  • Le service d'événement utilise l'objet JSON pour définir les règles d'événement . Vous pouvez penser à une règle comme le filtre cela déterminera quels événements sont importants à prendre en compte, pour déterminer quelles seront vos entrées. Fondamentalement, les règles déclenchent des actions . Un exemple de logique de règle peut être :
MATCH event WHERE (
  eventType EQUALS ANY OF (
  com.oraclecloud.computeapi.launchinstance.end
  )
)

Cet événement se déclenchera lorsqu'une nouvelle instance de calcul sera créée

Mais...

Où est la partie JSON ? ?
Sur l'événement lui-même, voyons un exemple d'événement :

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

Ceci est un exemple d'instance qui vient d'être créée et qui déclenchera l'événement.

  • Vous pouvez ajouter des conditions ou des filtres pour affiner davantage vos événements .

Lors de la configuration d'une règle d'événement, vous pouvez ajouter des attributs pour filtrer davantage vos résultats

Sur cet exemple nous filtrons les résultats du type d'événement, pour les modifications uniquement sur Sandbox et dev compartiments, toute la logique ressemble à :

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

En plus de cela, nous pouvons ajouter des conditions de filtrage basé sur les balises

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
  )
 )
)

Visuellement quelque chose comme :

En gros cet événement se déclenchera à chaque lancement d'une instance sur Sandbox OU dev compartiments par l'utilisateur elopez .

  • Les règles spécifient le plus et l'action .

L'objectif principal des règles est de provoquer quelque chose lorsqu'elles sont déclenchées, sinon elles seront inutiles.

Les actions sont des réponses définies pour l'événement correspondant

Les actions peuvent être créées à l'aide de :
Notifications envoyer les messages à un service de notification qui peut les envoyer aux terminaux abonnés au sujet

Il peut s'agir :d'une adresse e-mail, d'un groupe d'e-mails, d'un canal Slack, etc.

Diffusion en utilisant ce service, vous ingérerez vos événements dans un flux de données pour obtenir une analyse plus approfondie et des renseignements sur ces données.

Fonctions les fonctions peuvent être exécutées en fonction des événements reçus. Exemple :

vous pouvez avoir un événement qui se déclenche à chaque fois qu'une nouvelle instance est créée et cela exécutera une fonction qui configure la surveillance pour cette nouvelle instance.

  • Vous devez ajouter des autorisations pour que le service Événements puisse appeler les services d'action .

Prendre en considération toute action est refusée par défaut sur OCI, vous devrez donc créer une stratégie permettant au service Événements d'exécuter les actions.

L'autorisation de base dont vous aurez besoin est :

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

C'est pour la location mais vous pouvez l'attribuer à un compartiment spécifique

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

En savoir plus sur les compartiments ICI