Pub/Sub 상태 알림을 보내는 작업 만들기 및 실행

이 문서에서는 Pub/Sub 알림을 보내는 Batch 작업을 만드는 방법을 설명합니다. Pub/Sub를 사용하면 작업 또는 태스크 상태가 변경되거나 작업 또는 태스크가 특정 상태로 전환되면 알림을 받을 수 있습니다. 자세한 내용은 알림을 사용하여 작업 모니터링을 참조하세요.

시작하기 전에

필요한 역할

  • 알림을 보내는 작업을 만들고 실행하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

    역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

    커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

  • 작업의 서비스 계정에 대한 기본 구성을 사용하지 않는 경우 필요한 권한이 있는지 확인합니다.

    작업의 서비스 계정에 Pub/Sub 알림을 게시하는 데 필요한 권한을 확보하려면 관리자에게 작업의 서비스 계정에 Pub/Sub 주제에 대한 Pub/Sub 게시자(roles/pubsub.publisher) IAM 역할을 부여해 달라고 요청하세요.

  • 작업에서 작업과 다른 프로젝트에 있는 Pub/Sub 주제에 대한 알림을 게시하도록 하려면 작업의 프로젝트에 대한 Batch 서비스 에이전트에 해당 주제에 게시할 수 있는 권한을 부여해야 합니다.

    작업의 프로젝트에 대한 Batch 서비스 에이전트에서 다른 프로젝트에서 Pub/Sub 주제에 대한 Pub/Sub 알림을 게시하는 데 필요한 권한을 확보하려면 관리자에게 작업의 프로젝트에 대한 Batch 서비스 에이전트에 Pub/Sub 주제에 대한 Pub/Sub 게시자(roles/pubsub.publisher) IAM 역할을 부여해 달라고 요청하세요.

알림을 보내는 작업 만들기 및 실행

다음을 수행하여 Pub/Sub 알림을 보내는 Batch 작업을 만들 수 있습니다.

Google Cloud CLI 또는 REST API를 사용하여 JSON 파일의 본문에 notifications 필드 및 하나 이상의 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 구성 파일이 있을 수 있습니다.

{
  "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"
      }
    }
  ]
}

작업 실행이 시작된 후 해당 알림을 사용할 수 있습니다. 예를 들어 작업의 Pub/Sub 주제에 알림을 BigQuery로 스트리밍하는 구독이 있는 경우 BigQuery에서 Pub/Sub 알림을 분석할 수 있습니다.

다음 단계