Eventi sull'infrastruttura Oracle Cloud è un servizio che permette di creare delle automazioni basate sul cambio di stato in un servizio, o magari basate su una sorta di input ricevuto. Ora, facciamo un passo indietro e Evento è il verificarsi di una situazione particolare. Affinché queste situazioni siano utili, gli eventi devono contenere un qualche tipo di informazione, ad esempio nome dell'istanza, nome dell'oggetto, codice di stato, ecc. Le informazioni possono fornire all'automazione qualcosa con cui lavorare.
Eventi sono la base dell'architettura serverless, a volte indicata anche come architettura basata su eventi . Inoltre, gli eventi sono cruciali per le architetture software contemporanee in quanto consentono di disaccoppiare i servizi, aiutano a effettuare chiamate asincrone software e facilitare i processi di ridimensionamento.
Un esempio di architettura guidata da eventi:
- Sviluppi un'app per l'elaborazione delle immagini .
- Ogni volta che una nuova immagine viene caricata in un bucket attiva un evento .
- Questo evento chiama una funzione che cattura quell'immagine e crea una miniatura da essa .
- La miniatura è archiviato in un altro bucket.
- Questo attiva un altro evento che invia un'email di notifica al cliente.
NOTA La funzione OCI è una soluzione serverless di OCI, che consente di eseguire un software unico senza eseguire il provisioning di hardware o macchine virtuali, il software viene eseguito sulla base di un evento o di un lavoro pianificato, è come avere funzioni come servizio. Altro dalle funzioni QUI
Tornando a OCI Events, alcune delle caratteristiche importanti sono:
- Il servizio eventi utilizza l'oggetto JSON per definire le regole degli eventi . Puoi pensare a una regola come il filtro che determinerà quali eventi sono importanti da considerare, per determinare quali saranno i tuoi input. Fondamentalmente, Le regole attivano le azioni . Un esempio di logica di regola può essere:
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
)
Questo evento si attiverà quando viene creata una nuova istanza di calcolo
Ma...
Dov'è la parte JSON??
Sull'evento stesso, vediamo un esempio di evento:
{
"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"
}
}
Questo è un esempio di un'istanza che è stata appena creata e attiverà l'evento.
- Puoi aggiungere condizioni o filtri per restringere ulteriormente i tuoi eventi .
Durante la configurazione di una regola evento, puoi aggiungere alcuni attributi per filtrare ulteriormente i risultati
Su questo esempio stiamo filtrando i risultati dal tipo di evento, per le modifiche solo su Sandbox e dev scomparti, l'intera logica è simile a:
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
AND (
compartmentName MATCHES ANY OF (
Sandbox,
dev
)
)
)
In aggiunta a questo, possiamo aggiungere condizioni di filtro basato su tag
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
)
)
)
Visivamente qualcosa come:
Fondamentalmente questo evento si attiverà ogni volta che un'istanza viene avviata su Sandbox OPPURE sviluppatore scomparti dall'utente elopez .
- Regole più specifiche e azioni .
L'obiettivo principale delle regole è provocare qualcosa quando scattano, altrimenti saranno inutili.
Le azioni sono risposte definite per l'evento abbinato
Le azioni possono essere create utilizzando:
Notifiche inviare i messaggi a un servizio di notifica che può inviarli agli endpoint che sono iscritti all'argomento
Questi potrebbero essere:un indirizzo e-mail, un gruppo e-mail, un canale slack, ecc.
Streaming utilizzando questo servizio acquisirai i tuoi eventi in un flusso di dati per ottenere ulteriori analisi e informazioni su questi dati.
Funzioni le funzioni possono essere eseguite in base agli eventi ricevuti. Breve esempio:
puoi avere un evento che si attiva ogni volta che viene creata una nuova istanza e questo eseguirà una funzione che configura il monitoraggio per quella nuova istanza.
- Devi aggiungere le autorizzazioni in modo che il servizio Eventi possa chiamare i servizi di azione .
Prendi in considerazione qualsiasi azione è negata per impostazione predefinita su OCI, quindi dovrai creare una politica che consenta al servizio Eventi di eseguire le azioni.
L'autorizzazione di base di cui avrai bisogno è:
Allow service cloudEvents to use ons-topic in tenancy
Allow service cloudEvents to use functions-family in tenancy
Questo è per il affitto ma puoi assegnarlo a uno specifico Scomparto
Allow service cloudEvents to use ons-topic in compartment DEV
Allow service cloudEvents to use functions-family in compartment DEV
Maggiori informazioni sugli scomparti QUI