In diesem Dokument wird beschrieben, wie Sie einen Batchjob erstellen, der Pub/Sub-Benachrichtigungen sendet. Mit Pub/Sub können Sie sich benachrichtigen lassen, 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 mithilfe von Benachrichtigungen überwachen.
Hinweise
- Wenn Sie Batch zum ersten Mal verwenden, lesen Sie Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie den Voraussetzungen für Projekte und Nutzer.
- Erstellen oder identifizieren Sie ein Pub/Sub-Thema für Batchbenachrichtigungen.
- Konfigurieren Sie ein Abo, um die Benachrichtigungen zu erhalten und zu verwenden.
Erforderliche Rollen
-
So erhalten Sie die Berechtigungen, die Sie zum Erstellen und Ausführen eines Jobs zum Senden von Benachrichtigungen benötigen: bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen:
-
Batch-Job-Bearbeiter (
roles/batch.jobsEditor
) für das Projekt. -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) im Dienstkonto des Jobs, das standardmäßig das Compute Engine-Standarddienstkonto ist. -
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 (
-
Es sei denn, Sie verwenden die Standardkonfiguration für über das Dienstkonto des Jobs ob sie die erforderlichen Berechtigungen hat.
Damit das Dienstkonto des Jobs die erforderlichen Berechtigungen zum Veröffentlichen von Pub/Sub-Benachrichtigungen hat, bitten Sie Ihren Administrator, dem Dienstkonto des Jobs die IAM-Rolle Pub/Sub-Publisher (
roles/pubsub.publisher
) für Ihr Pub/Sub-Thema zu erteilen. - Wenn Sie möchten, dass ein Job Benachrichtigungen in einem Pub/Sub-Thema veröffentlicht,
sich in einem anderen Projekt befindet als der Job,
Batch-Dienst-Agent
für das Projekt des Jobs muss die Berechtigung zum Veröffentlichen in diesem Thema gewährt werden.
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, 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
Job erstellen und ausführen, der Benachrichtigungen sendet
Sie können einen Batchjob erstellen, der Pub/Sub-Benachrichtigungen sendet Dazu gehen Sie so vor:
gcloud
Verwenden Sie die Google Cloud CLI, um einen Job zu erstellen, der das Feld notifications
und ein oder mehrere jobNotification
-Objekte im Hauptteil der JSON-Datei enthält:
{
...
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
}
]
...
}
Ersetzen Sie Folgendes:
PROJECT_ID
ist die Projekt-ID des Projekts, das enthält das Pub/Sub-Thema.TOPIC_ID
: die Pub/Sub-Themen-ID des Themas die Sie erstellt haben, als Sie Pub/Sub-Benachrichtigungen aktiviert.ATTRIBUTES
: Geben Sie mindestens eine der folgenden Optionen an. Attribute, mit denen Sie jeweils Benachrichtigungen über den Status der Job oder allen zugehörigen Aufgaben.Geben Sie Folgendes an, um Benachrichtigungen zu allen Änderungen des Jobstatus zu erhalten:
"type": "JOB_STATE_CHANGED"
Geben Sie für Benachrichtigungen über eine bestimmte Änderung des Jobstatus Folgendes an:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
Ersetzen Sie
JOB_STATE
durch einen der folgenden Jobstatus:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Weitere Informationen zum Jobstatus finden Sie unter Joblebenszyklus.
Geben Sie Folgendes an, um Benachrichtigungen zu allen Änderungen des Aufgabenstatus zu erhalten:
"type": "TASK_STATE_CHANGED"
Geben Sie für Benachrichtigungen zu bestimmten Aufgabenstatusänderungen Folgendes an:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
Ersetzen Sie
TASK_STATE
durch einen der folgenden Aufgabenstatus:PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
Weitere Informationen zu Aufgabenstatus finden Sie unter Joblebenszyklus.
Angenommen, Sie möchten Benachrichtigungen zu allen Änderungen des Jobstatus und jedes Mal erhalten, wenn eine Aufgabe fehlschlägt. Dazu können Sie eine JSON-Datei verwenden, die in etwa so aussieht:
{
"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
Verwenden Sie die REST API für
einen Job erstellen, der
enthält das Feld notifications
und mindestens eins
jobNotification
Objekte
im Haupttext der JSON-Datei:
{
...
"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-Thema-ID des Themas, das Sie beim Aktivieren von Pub/Sub-Benachrichtigungen erstellt haben.ATTRIBUTES
: Geben Sie mindestens eine der folgenden Optionen an. Attribute, mit denen Sie jeweils Benachrichtigungen über den Status der Job oder allen zugehörigen Aufgaben.Geben Sie Folgendes an, um Benachrichtigungen zu allen Änderungen des Jobstatus zu erhalten:
"type": "JOB_STATE_CHANGED"
Geben Sie für Benachrichtigungen über eine bestimmte Änderung des Jobstatus Folgendes an:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
Ersetzen Sie
JOB_STATE
durch einen der folgenden Jobstatus:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Weitere Informationen zum Jobstatus finden Sie unter Joblebenszyklus.
Geben Sie Folgendes an, um Benachrichtigungen zu allen Änderungen des Aufgabenstatus zu erhalten:
"type": "TASK_STATE_CHANGED"
Geben Sie für Benachrichtigungen zu bestimmten Aufgabenstatusänderungen Folgendes an:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
Ersetzen Sie
TASK_STATE
durch einen der folgenden Werte: Aufgabenstatus:PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
Weitere Informationen zu Aufgabenstatus finden Sie unter Joblebenszyklus.
Angenommen, Sie möchten Benachrichtigungen über den gesamten Jobstatus erhalten. und wann immer eine Aufgabe fehlschlägt. Dazu können Sie eine JSON-Datei verwenden, die in etwa so aussieht:
{
"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 gestartet wurde, können Sie die zugehörigen Benachrichtigungen verwenden. Beispiel: Das Pub/Sub-Thema für Ihren Job hat ein Abo. die Benachrichtigungen an BigQuery streamt, können Sie Pub/Sub-Benachrichtigungen in BigQuery analysieren
Nächste Schritte
- Weitere Informationen zum Überwachen des Jobstatus mit Pub/Sub-Benachrichtigungen und BigQuery
- Wenn beim Erstellen oder Ausführen eines Jobs Probleme auftreten, lesen Sie den Hilfeartikel Fehlerbehebung.
- Aufträge und Aufgaben ansehen
- Weitere Informationen zu Optionen zum Erstellen von Jobs