In diesem Dokument wird beschrieben, wie Sie einen Batch-Job 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 noch nicht verwendet haben, lesen Sie den Hilfeartikel Batch-Dateien erstellen und ausführen und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
- 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
-
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, über den Benachrichtigungen gesendet werden:
-
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 (
-
Sofern Sie nicht die Standardkonfiguration für das Dienstkonto des Jobs verwenden, muss es die erforderlichen Berechtigungen haben.
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 ein Job Benachrichtigungen in einem Pub/Sub-Thema veröffentlichen soll, das sich in einem anderen Projekt als dem des Jobs befindet, muss dem Batch-Dienst-Agent für das Projekt des Jobs die Berechtigung zum Veröffentlichen in diesem Thema erteilt 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 hat, 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.
Job erstellen und ausführen, der Benachrichtigungen sendet
So erstellen Sie einen Batchjob, der Pub/Sub-Benachrichtigungen sendet:
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
: 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 eines oder mehrere der folgenden Attribute an, mit denen Sie Benachrichtigungen über den Status des Jobs oder aller seiner Aufgaben erhalten.Geben Sie Folgendes an, um Benachrichtigungen zu allen Änderungen des Jobstatus zu erhalten:
"type": "JOB_STATE_CHANGED"
Geben Sie Folgendes an, um Benachrichtigungen zu einer bestimmten Änderung des Jobstatus zu erhalten:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
Ersetzen Sie
JOB_STATE
durch einen der folgenden Jobstatus:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Weitere Informationen zu 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 Änderungen des Aufgabenstatus 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-Konfigurationsdatei 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, 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
: 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 eines oder mehrere der folgenden Attribute an, mit denen Sie Benachrichtigungen über den Status des Jobs oder aller seiner Aufgaben erhalten.Geben Sie Folgendes an, um Benachrichtigungen zu allen Änderungen des Jobstatus zu erhalten:
"type": "JOB_STATE_CHANGED"
Geben Sie Folgendes an, um Benachrichtigungen zu einer bestimmten Änderung des Jobstatus zu erhalten:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
Ersetzen Sie
JOB_STATE
durch einen der folgenden Jobstatus:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Weitere Informationen zu 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 Änderungen des Aufgabenstatus 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-Konfigurationsdatei 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. 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 beim Erstellen oder Ausführen eines Jobs Probleme auftreten, lesen Sie den Hilfeartikel Fehlerbehebung.
- Aufgaben und Jobs ansehen
- Weitere Informationen zu Optionen zum Erstellen von Jobs