Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriversi a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Quando completi il tuo laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Configurare le notifiche per i job del workflow AIDP e gli scenari personalizzati utilizzando le notifiche OCI
Introduzione
Questa esercitazione spiega come configurare le notifiche per i job del workflow AIDP utilizzando il servizio Notifiche ed eventi OCI. Imparerai anche come implementare la logica di notifica personalizzata utilizzando un programma Python in un notebook AIDP.
Il servizio Notifiche OCI utilizza un modello di pubblicazione/sottoscrizione per consegnare i messaggi in modo affidabile e sicuro.
Obiettivi
Entro la fine di questo tutorial, sarete in grado di:
- Creare un argomento di notifica OCI e una sottoscrizione
- Configurare le regole evento per lo stato del job del workflow AIDP
- Ricevere notifiche e-mail per errori job
- Implementa una logica di notifica personalizzata utilizzando Python
- Attiva notifiche a livello di programmazione
Prerequisiti
- Accesso a OCI Console
- Area di lavoro AIDP con job flusso di lavoro
- Autorizzazioni per creare notifiche ed eventi
- Impostazione di configurazione OCI per l'uso dell'SDK Python
Task 1: Crea argomento di notifica e sottoscrizione
- Eseguire il login a OCI Console.
- Passare a Servizi per sviluppatori → Notifiche.
- Fare clic su Crea argomento e fornire:
- Nome
- Descrizione

- Crea sottoscrizione:
- Protocollo: E-mail
- E-mail: il tuo indirizzo e-mail

-
Controlla la tua email e conferma l'iscrizione.

Nota: lo stato della sottoscrizione viene modificato da In sospeso in Attivo dopo la conferma.
Task 2: Configura regola evento per flusso di lavoro AIDP
- Passare a Osservabilità e gestione → Servizio eventi → Regole.
- Fare clic su Crea regola
- Configurare quanto riportato di seguito.
- Service: Data lake intelligente
- Tipo di evento: Esegui job - Fine
- Nome attributo 1: jobKey
- Valori attributo 1: Mantieni ID flusso di lavoro helpp
- Nome attributo 2: jobStatus
- Valori attributo 2: non riuscito
- Imposta azione:
- Seleziona argomento di notifica creato in precedenza

Suggerimento: è possibile personalizzare le regole per altri stati quali Operazione riuscita o Esecuzione.
Task 3: Convalida notifica e-mail
- Attivare o eseguire un job del workflow.
- Se necessario, forzare uno scenario di errore.
-
Controllare la posta in arrivo dell'e-mail.

Nota: la notifica include dettagli sul job, ad esempio il nome e lo stato.
Task 4: Implementare una notifica personalizzata utilizzando Python
Di seguito è riportato un programma Python di esempio per inviare notifiche utilizzando l'SDK OCI.
import oci
from oci.ons.models import MessageDetails
config = oci.config.from_file("~/.oci/config", "DEFAULT")
client = oci.ons.NotificationDataPlaneClient(config)
topic_id = "<your_topic_ocid>"
message_details = MessageDetails(
title="Test Notification",
body="Hello from AIDP!"
)
response = client.publish_message(
topic_id=topic_id,
message_details=message_details
)
print("Message sent:", response.data.message_id)
Task 5: Classe notifica personalizzata avanzata
import oci
import logging
import time
from typing import List, Optional, Dict
logger = logging.getLogger("OCI_Notifier")
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
handler.setFormatter(formatter)
logger.addHandler(handler)
class OCINotifier:
def __init__(
self,
topic_id: str,
config_file: str = "~/.oci/config",
profile: str = "DEFAULT",
max_retries: int = 3,
retry_delay: int = 2,
):
"""
Initialize OCI Notification client
Args:
topic_id: OCI Notification Topic OCID
config_file: Path to OCI config
profile: Config profile name
max_retries: Retry attempts
retry_delay: Delay between retries (seconds)
"""
self.topic_id = topic_id
self.max_retries = max_retries
self.retry_delay = retry_delay
try:
self.config = oci.config.from_file(config_file, profile)
self.client = oci.ons.NotificationDataPlaneClient(self.config)
logger.info("OCI Notifier initialized successfully")
except Exception as e:
logger.error(f"Failed to initialize OCI client: {e}")
raise
def send(
self,
title: str,
message: str,
metadata: Optional[Dict] = None,
) -> bool:
"""
Send notification message
Args:
title: Notification subject
message: Notification body
metadata: Optional metadata dictionary
Returns:
bool: True if success, False otherwise
"""
payload = {
"title": title,
"body": message,
}
if metadata:
payload["metadata"] = metadata
for attempt in range(1, self.max_retries + 1):
try:
response = self.client.publish_message(
self.topic_id,
payload
)
logger.info(
f"Notification sent successfully | "
f"Message ID: {response.data.message_id}"
)
return True
except Exception as e:
logger.error(
f"Attempt {attempt} failed: {str(e)}"
)
if attempt < self.max_retries:
time.sleep(self.retry_delay)
else:
logger.error("Max retries reached. Notification failed.")
return False
def notify_success(notifier: OCINotifier, job_name: str):
notifier.send(
title=f"{job_name} SUCCESS",
message=f"Job '{job_name}' completed successfully."
)
def notify_failure(notifier: OCINotifier, job_name: str, error: str):
notifier.send(
title=f"{job_name} FAILED",
message=f"Job '{job_name}' failed.\nError: {error}"
)
Task 6: Notifica personalizzata chiamata da blocco note AIDP
È possibile richiamare la logica di notifica all'interno del workflow o del notebook:
from notifier import notify_failure
notify_failure(notifier, "SampleJob", "Error details here")
Risoluzione dei problemi e suggerimenti
Suggerimento: assicurarsi che il percorso del file di configurazione OCI sia corretto.
Nota: verificare l'OCID dell'argomento e lo stato della sottoscrizione.
Suggerimento: utilizzare i nuovi tentativi nel notificatore personalizzato per garantire l'affidabilità.
Passi successivi
- Aggiungi sottoscrizioni Slack o HTTPS
- Estendi notifiche per eventi riusciti
- Integrazione con dashboard di monitoraggio
Riconoscimenti
- Autore: Pavan Upadhyay (Principal Cloud Engineer), Saket Bihari (Principal Cloud Engineer)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Configure Notifications for AIDP Workflow Jobs and Custom Scenarios Using OCI Notifications
G56828-01