このドキュメントでは、Pub/Sub 通知を送信する Batch ジョブを作成する方法について説明します。Pub/Sub を使用して、ジョブやタスクの状態が変更されたときや、ジョブまたはタスクが特定の状態になったときに通知を受け取ることができます。詳細については、通知を使用してジョブをモニタリングするをご覧ください。
準備
- Batch を以前に使用したことがなかった場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
通知を送信するジョブを作成して実行するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
プロジェクトの Batch ジョブ編集者(
roles/batch.jobsEditor
) -
ジョブのサービス アカウントのサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)。デフォルトでは Compute Engine のデフォルトのサービス アカウントです。 -
Pub/Sub トピックまたはプロジェクトに対する Pub/Sub 編集者 (
roles/pubsub.editor
)。
ロールの付与の詳細については、アクセスの管理をご覧ください。
-
プロジェクトの Batch ジョブ編集者(
-
このジョブのサービス アカウントが Pub/Sub 通知を公開するために必要な権限を持っていることを確認するために、ジョブのサービス アカウントに Pub/Sub トピックに対する Pub/Sub パブリッシャー (
roles/pubsub.publisher
)IAM ロールを付与するように管理者に依頼します。デフォルトでは、ジョブのサービス アカウントはデフォルトの Compute Engine サービス アカウントです。
- ジョブの Pub/Sub ステータス通知を有効にします。
- 必要に応じて、BigQuery に通知をストリーミングするように Pub/Sub を構成します。
通知を送信するジョブを作成して実行する
次の手順を行って、Pub/Sub 通知を送信する Batch ジョブを作成できます。
Google Cloud CLI または REST API を使用して、JSON ファイルの本文に notifications
フィールドと 1 つ以上の jobNotification
オブジェクト を含むジョブを作成します。
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
},
]
次のように置き換えます。
PROJECT_ID
: Pub/Sub トピックを含むプロジェクトのプロジェクト ID。TOPIC_ID
: Pub/Sub 通知を有効にしたときに作成したトピックの Pub/Sub トピック ID。ATTRIBUTES
: 指定する属性は、ジョブに関する通知を受信するか、ジョブ内のすべてのタスクを受信するかによって異なります。すべてのジョブの状態の変更に関する通知を取得するには、以下を指定します。
"type": "JOB_STATE_CHANGED"
特定のジョブの状態の変更に関する通知を取得するには、以下を指定します。
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
JOB_STATE
は、次のいずれかのジョブの状態に置き換えます。QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
ジョブの状態の詳細については、ジョブのライフサイクルをご覧ください。
すべてのタスクの状態の変更に関する通知を取得するには、以下を指定します。
"type": "TASK_STATE_CHANGED"
特定のタスクの状態の変更に関する通知については、以下を指定します。
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
TASK_STATE
は、次のいずれかのタスクの状態に置き換えます。PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
タスクの状態の詳細については、ジョブのライフサイクルをご覧ください。
たとえば、すべてのジョブの状態の変更とタスクが失敗したときに通知を受け取りたいとします。これを行うには、ジョブの構成 JSON ファイルに以下を追加します。
"notifications": [
{
"pubsubTopic": "projects/example-projecet/topics/example-topic",
"message": {
"type": "JOB_STATE_CHANGED"
}
},
{
"pubsubTopic": "projects/example-project/topics/example-topic",
"message": {
"type": "TASK_STATE_CHANGED",
"newTaskState": "FAILED"
}
}
]
次のステップ
- ジョブの作成または実行に問題がある場合は、トラブルシューティングをご覧ください。
- ジョブとタスクを表示する。
- 別のジョブ作成オプションを学習する。