Storage Transfer Service 전송을 완료한 후 다른 태스크를 시작하거나, 전송 중에 발생한 오류를 처리하거나, 발생한 전송을 로깅하려 할 수 있습니다. Pub/Sub는 전송이 완료될 때 프로그램이 메시지를 수신하도록 구독하는 큐를 제공합니다. 이렇게 하면 코드를 재사용하고 전송 상태에 따라 다음 단계를 프로그래밍할 수 있습니다.
Pub/Sub에 대한 자세한 내용은 Cloud Pub/Sub 소개를 참조하세요.
기본 요건
이 기능을 사용하려면 다음을 수행하세요.
Pub/Sub 알림을 수신하는 프로젝트에 Pub/Sub API를 사용 설정합니다.
알림을 보내려는 기존 Pub/Sub 주제가 있어야 합니다.
Storage Transfer Service 버킷이 있는 프로젝트와 연결된 서비스 계정의 이메일 주소를 가져옵니다.
- 원하는 Pub/Sub 주제의 IAM 역할
roles.pubsub.publisher
를 서비스 계정에 부여합니다.
- 원하는 Pub/Sub 주제의 IAM 역할
알림 설정 구성
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 프로젝트 IDtopic-id
: Pub/Sub 주제 이름
자세한 내용은 Storage Transfer Service Pub Sub REST 사양을 참조하세요.
알림 형식
Pub/Sub 주제로 전송되는 알림은 다음 두 부분으로 구성됩니다.
- 속성: 이벤트를 설명하는 키:값 쌍의 조합입니다.
- 페이로드: 변경된 객체의 메타데이터를 포함하는 문자열입니다.
속성
속성은 Storage Transfer Service가 Pub/Sub 주제로 전송하는 모든 알림에 포함되는 키:값 쌍입니다. 알림 페이로드에 관계없이 알림에는 항상 다음 키:값 쌍 조합이 포함됩니다.
Pub/Sub 메시지 형식에 대한 자세한 내용은 PubsubMessage
를 참조하세요.
속성 이름 | 예 | 설명 |
---|---|---|
eventType |
TRANSFER_OPERATION_SUCCESS |
NotificationConfig.EventType 의 TransferOperation 상태 |
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 프로젝트 IDtopic-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 프로젝트 IDtopic-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에 더 이상 주제에 게시할 수 있는 권한이 없거나, 주제를 소유하는 프로젝트가 게시 할당량을 초과하면 전송이 실패할 수 있습니다.