In diesem Dokument wird erläutert, wie Sie einen Batch-Job erstellen, der Pub/Sub Benachrichtigungen sendet. Mit Pub/Sub können Sie Benachrichtigungen erhalten, wenn sich der Status eines Jobs oder einer Aufgabe ändert oder wenn ein Job oder eine Aufgabe einen bestimmten Status erreicht. Weitere Informationen finden Sie unter Jobs mit Benachrichtigungen überwachen.
Hinweis
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Artikel Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzererfüllen.
- Erstellen oder identifizieren Sie ein Pub/Sub-Thema für Batch-Benachrichtigungen.
- Konfigurieren Sie ein Abo, um die Benachrichtigungen zu erhalten und zu verwenden.
Erforderliche Rollen
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Ausführen eines Jobs benötigen, der Benachrichtigungen sendet:
- Batch-Job-Bearbeiter (
roles/batch.jobsEditor) für das Projekt. - Dienstkontonutzer (
roles/iam.serviceAccountUser) für das Dienstkonto des Jobs. Standardmäßig ist dies das Compute Engine-Standarddienstkonto. - Pub/Sub-Bearbeiter (
roles/pubsub.editor) für das Pub/Sub-Thema oder -Projekt.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
- Batch-Job-Bearbeiter (
-
Wenn Sie nicht die Standardkonfiguration für das Dienstkonto des Jobs verwenden, prüfen Sie, ob es die erforderlichen Berechtigungen hat.
Bitten Sie Ihren Administrator, dem Dienstkonto des Jobs die IAM-Rolle Pub/Sub-Publisher (
roles/pubsub.publisher) für Ihr Pub/Sub-Thema zuzuweisen, damit das Dienstkonto des Jobs die erforderlichen Berechtigungen zum Veröffentlichen von Pub/Sub-Benachrichtigungen hat. - Wenn ein Job Benachrichtigungen in einem Pub/Sub-Thema veröffentlichen soll, das
sich in einem anderen Projekt als der Job befindet, muss dem
Batch-Dienst-Agent
für das Projekt des Jobs die Berechtigung zum Veröffentlichen in diesem Thema erteilt werden.
Bitten Sie Ihren Administrator, dem Batch-Dienst-Agent für das Projekt des Jobs die IAM-Rolle „Pub/Sub-Publisher “ (
roles/pubsub.publisher) für das Pub/Sub-Thema zuzuweisen, damit der Batch-Dienst-Agent für das Projekt des Jobs die erforderlichen Berechtigungen zum Veröffentlichen von Pub/Sub-Benachrichtigungen in einem Pub/Sub-Thema in einem anderen Projekt hat.
Job erstellen und ausführen, der Benachrichtigungen sendet
Sie können einen Batch-Job erstellen, der Pub/Sub-Benachrichtigungen sendet. Gehen Sie dazu so vor:
gcloud
Erstellen Sie mit der Google Cloud CLI einen Job, der das Feld notifications und ein oder mehrere Objekte im Hauptteil der JSON-Datei enthält:jobNotification
{
...
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
}
]
...
}
Ersetzen Sie Folgendes:
PROJECT_ID: die Projekt-ID des Projekts, das das Pub/Sub-Thema enthält.TOPIC_ID: die Pub/Sub-Themen-ID des Themas , das Sie beim Aktivieren von Pub/Sub-Benachrichtigungen erstellt haben.ATTRIBUTES: Geben Sie ein oder mehrere der folgenden Attribute an, mit denen Sie Benachrichtigungen über den Status des Jobs oder aller seiner Aufgaben erhalten können.Geben Sie für Benachrichtigungen über alle Jobstatusänderungen Folgendes an:
"type": "JOB_STATE_CHANGED"Geben Sie für Benachrichtigungen über eine bestimmte Jobstatusänderung Folgendes an:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"Ersetzen Sie
JOB_STATEdurch einen der folgenden Jobstatus:QUEUEDSCHEDULEDRUNNINGSUCCEEDEDFAILED
Weitere Informationen zu Jobstatus finden Sie unter Joblebenszyklus.
Geben Sie für Benachrichtigungen über alle Aufgabenstatusänderungen Folgendes an:
"type": "TASK_STATE_CHANGED"Geben Sie für Benachrichtigungen über bestimmte Aufgabenstatusänderungen Folgendes an:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"Ersetzen Sie
TASK_STATEdurch einen der folgenden Aufgabenstatus:PENDINGASSIGNEDRUNNINGSUCCEEDEDFAILED
Weitere Informationen zu Aufgabenstatus finden Sie unter Joblebenszyklus.
Angenommen, Sie möchten Benachrichtigungen über alle Jobstatusänderungen und jedes Mal erhalten, wenn eine Aufgabe fehlschlägt. Dazu können Sie eine JSON-Konfigurationsdatei verwenden, die der folgenden ähnelt:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3,
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
},
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "JOB_STATE_CHANGED"
}
},
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "TASK_STATE_CHANGED",
"newTaskState": "FAILED"
}
}
]
}
API
Erstellen Sie mit der REST API einen Job, der das Feld notifications und ein oder mehrere Objekte im Hauptteil der JSON-Datei enthält:jobNotification
{
...
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
}
]
...
}
Ersetzen Sie Folgendes:
PROJECT_ID: die Projekt-ID des Projekts, das das Pub/Sub-Thema enthält.TOPIC_ID: die Pub/Sub-Themen-ID des Themas , das Sie beim Aktivieren von Pub/Sub-Benachrichtigungen erstellt haben.ATTRIBUTES: Geben Sie ein oder mehrere der folgenden Attribute an, mit denen Sie Benachrichtigungen über den Status des Jobs oder aller seiner Aufgaben erhalten können.Geben Sie für Benachrichtigungen über alle Jobstatusänderungen Folgendes an:
"type": "JOB_STATE_CHANGED"Geben Sie für Benachrichtigungen über eine bestimmte Jobstatusänderung Folgendes an:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"Ersetzen Sie
JOB_STATEdurch einen der folgenden Jobstatus:QUEUEDSCHEDULEDRUNNINGSUCCEEDEDFAILED
Weitere Informationen zu Jobstatus finden Sie unter Joblebenszyklus.
Geben Sie für Benachrichtigungen über alle Aufgabenstatusänderungen Folgendes an:
"type": "TASK_STATE_CHANGED"Geben Sie für Benachrichtigungen über bestimmte Aufgabenstatusänderungen Folgendes an:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"Ersetzen Sie
TASK_STATEdurch einen der folgenden Aufgabenstatus:PENDINGASSIGNEDRUNNINGSUCCEEDEDFAILED
Weitere Informationen zu Aufgabenstatus finden Sie unter Joblebenszyklus.
Angenommen, Sie möchten Benachrichtigungen über alle Jobstatusänderungen und jedes Mal erhalten, wenn eine Aufgabe fehlschlägt. Dazu können Sie eine JSON-Konfigurationsdatei verwenden, die der folgenden ähnelt:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3,
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
},
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "JOB_STATE_CHANGED"
}
},
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "TASK_STATE_CHANGED",
"newTaskState": "FAILED"
}
}
]
}
Go
Java
Node.js
Python
Nachdem der Job ausgeführt wurde, können Sie seine Benachrichtigungen verwenden. Wenn das Pub/Sub-Thema für Ihren Job beispielsweise ein Abo hat, das Benachrichtigungen an BigQuery streamt, können Sie die Pub/Sub-Benachrichtigungen in BigQuery analysieren.
Nächste Schritte
- Weitere Informationen zum Überwachen des Jobstatus mit Pub/Sub-Benachrichtigungen und BigQuery.
- Wenn Sie Probleme beim Erstellen oder Ausführen eines Jobs haben, lesen Sie den Abschnitt zu Fehlerbehebung.
- Jobs und Aufgaben ansehen.
- Weitere Informationen zu Optionen für die Joberstellung.