Pub/Sub 알림

Storage Transfer Service 전송을 완료한 후 다른 태스크를 시작하거나, 전송 중에 발생한 오류를 처리하거나, 발생한 전송을 로깅하려 할 수 있습니다. Pub/Sub는 전송이 완료될 때 프로그램이 메시지를 수신하도록 구독하는 큐를 제공합니다. 이렇게 하면 코드를 재사용하고 전송 상태에 따라 다음 단계를 프로그래밍할 수 있습니다.

Pub/Sub에 대한 자세한 내용은 Cloud Pub/Sub 소개를 참조하세요.

기본 요건

이 기능을 사용하려면 다음을 수행하세요.

  1. Pub/Sub 알림을 수신하는 프로젝트에 Pub/Sub API를 사용 설정합니다.

    API 사용 설정

  2. 알림을 보내려는 기존 Pub/Sub 주제가 있어야 합니다.

  3. Storage Transfer Service 버킷이 있는 프로젝트와 연결된 서비스 계정의 이메일 주소를 가져옵니다.

    1. 원하는 Pub/Sub 주제의 IAM 역할 roles.pubsub.publisher를 서비스 계정에 부여합니다.

알림 설정 구성

Storage Transfer Service Pub/Sub 알림 설정을 구성하려면 Storage Transfer Service transferJobs API를 사용하여 NotificationConfig 메시지를 만듭니다. 주제는 구성된 Pub/Sub 채널에서 알림을 받습니다.

NotificationConfig 메시지에서 다음을 지정합니다.

  • 알림을 보낼 Pub/Sub 주제
  • 메시지의 형식("JSON" 또는 "NONE")
  • 원하는 유형으로, 완료된 TransferOperation.Statuses에 해당됩니다.

    • "TRANSFER_OPERATION_SUCCESS"
    • "TRANSFER_OPERATION_FAILED"
    • "TRANSFER_OPERATION_ABORTED"

다음은 NotificationConfig 메시지의 예시입니다.

{
   ...
   "notificationConfig": {
     "pubsubTopic": "projects/project-id/topics/topic-id",
     "eventTypes": ["TRANSFER_OPERATION_SUCCESS"],
     "payloadFormat": "JSON"
   },
   ...
}

다음을 바꿉니다.

  • project-id: 전송의 Google Cloud 프로젝트 ID
  • topic-id: Pub/Sub 주제 이름

자세한 내용은 Storage Transfer Service Pub Sub REST 사양을 참조하세요.

알림 형식

Pub/Sub 주제로 전송되는 알림은 다음 두 부분으로 구성됩니다.

  • 속성: 이벤트를 설명하는 키:값 쌍의 조합입니다.
  • 페이로드: 변경된 객체의 메타데이터를 포함하는 문자열입니다.

속성

속성은 Storage Transfer Service가 Pub/Sub 주제로 전송하는 모든 알림에 포함되는 키:값 쌍입니다. 알림 페이로드에 관계없이 알림에는 항상 다음 키:값 쌍 조합이 포함됩니다.

Pub/Sub 메시지 형식에 대한 자세한 내용은 PubsubMessage를 참조하세요.

속성 이름 예시 설명
eventType TRANSFER_OPERATION_SUCCESS NotificationConfig.EventTypeTransferOperation 상태
payloadFormat "JSON" 메시지 형식("JSON" 또는 "NONE"). NotificationConfig.PayloadFormat에서.
projectId project-3 전송 호스트 프로젝트의 ID
transferJobName transferJobs/123 전송 작업의 이름
transferOperationName transferOperations/456 전송 작업의 이름

페이로드

페이로드에는 TransferOperation 메타데이터가 포함됩니다. 알림 구성을 만들 때 이 구성으로 트리거되는 알림에 포함할 페이로드 유형을 지정합니다. 다음 유형의 페이로드를 지정할 수 있습니다.

페이로드 유형 설명
없음 알림에 페이로드가 포함되지 않습니다.
JSON 페이로드의 형식은 애플리케이션/json에서 JSON 응답으로 지정됩니다.

Pub/Sub 알림 구성 예시

전송이 실패한 경우에만 알림

전송이 실패한 경우에만 메시지를 받으려면 실패한 전송만 필터링하는 NotificationConfig를 사용하여 TransferJob을 제출합니다.

// REST JSON format:
//   https://cloud.google.com/storage-transfer/docs/create-manage-transfer-program
{
   ...
   "notificationConfig": {
     "pubsubTopic": "projects/project-id/topics/topic-id",
     "eventTypes": ["TRANSFER_OPERATION_FAILED"],
     "payloadFormat: "JSON"
   },
   ...
}

다음을 바꿉니다.

  • project-id: 전송의 Google Cloud 프로젝트 ID
  • topic-id: Pub/Sub 주제 이름

모든 전송 완료를 알림

완료된 모든 전송에 대해 알리려면 상태에 관계없이 EventType 필터를 사용하지 않고 NotificationConfig를 사용하여 TransferJob을 제출합니다.

// REST JSON format:
//   https://cloud.google.com/storage-transfer/docs/create-manage-transfer-program
{
   ...
   "notificationConfig": {
     "pubsubTopic": "projects/project-id/topics/topic-id",
     "payloadFormat: "JSON"
   },
   ...
}

다음을 바꿉니다.

  • project-id: 전송의 Google Cloud 프로젝트 ID
  • topic-id: Pub/Sub 주제 이름

전송에서 임의 동작 수행

임시 작업을 수행하려면 백그라운드 클라우드 함수와 페어링된 Pub/Sub 트리거가 있는 Cloud 함수를 사용하여 Pub/Sub 알림을 만듭니다. 자세한 내용은 Cloud Pub/Sub 가이드를 참조하세요.

임의 동작의 예시는 다음과 같습니다.

전송 보장

알림 구성을 추가하면 Storage Transfer Service는 시작된 모든 TransferOperations에 대한 알림을 전송하며 Pub/Sub에 최소 1회 전송을 보장합니다. Pub/Sub도 수신자에게 최소 일회 전송을 제공하므로 동일한 Storage Transfer Service 이벤트를 나타내고 ID가 여러 개인 메시지가 여러 개 수신될 수 있습니다.

알림은 Pub/Sub가 알림을 수신하는 순서로 게시된다고 보장되지 않습니다.

Pub/Sub 주제에 지속적으로 알림을 전송할 수 없으면 Storage Transfer Service가 7일 후에 알림을 삭제할 수 있습니다. Pub/Sub 주제가 더 이상 없거나, Storage Transfer Service에 더 이상 주제에 게시할 수 있는 권한이 없거나, 주제를 소유하는 프로젝트가 게시 할당량을 초과하면 전송이 실패할 수 있습니다.