Depois de concluir uma transferência do Serviço de Transferência de Armazenamento, pode querer iniciar outra tarefa, resolver um erro encontrado durante uma transferência ou registar que ocorreu uma transferência. O Pub/Sub fornece uma fila à qual os seus programas subscrevem para receber mensagens quando uma transferência é concluída. Isto permite-lhe reutilizar código e programar os passos seguintes com base no estado de uma transferência.
Para mais informações sobre o Pub/Sub, consulte o artigo O que é o Cloud Pub/Sub
Pré-requisitos
Antes de poder utilizar esta funcionalidade, faça o seguinte:
Ative a API Pub/Sub para o projeto que recebe notificações do Pub/Sub.
Ter um tópico do Pub/Sub existente para o qual quer enviar notificações.
Obtenha o endereço de email da conta de serviço associada ao projeto que contém o seu contentor do Storage Transfer Service.
- Conceda à conta de serviço a função do IAM
roles.pubsub.publisher
para o tópico do Pub/Sub pretendido.
- Conceda à conta de serviço a função do IAM
Configurar definições de notificação
Para configurar as definições de notificação do Pub/Sub do serviço de transferência de armazenamento, use a API transferJobs do serviço de transferência de armazenamento para criar uma mensagem NotificationConfig
. O tópico vai receber notificações no canal Pub/Sub configurado.
Especifique o seguinte na sua mensagem NotificationConfig
:
- O tópico do Pub/Sub para o qual enviar notificações
- O formato da mensagem,
"JSON"
ou"NONE"
Os tipos de eventos desejados, correspondentes a eventos concluídos
TransferOperation.Statuses
:"TRANSFER_OPERATION_SUCCESS"
"TRANSFER_OPERATION_FAILED"
"TRANSFER_OPERATION_ABORTED"
Segue-se um exemplo de uma mensagem NotificationConfig
:
{
...
"notificationConfig": {
"pubsubTopic": "projects/project-id/topics/topic-id",
"eventTypes": ["TRANSFER_OPERATION_SUCCESS"],
"payloadFormat": "JSON"
},
...
}
Substitua o seguinte:
project-id
: O Google Cloud ID do projeto da transferênciatopic-id
: o nome do tópico do Pub/Sub
Para mais informações, consulte a especificação REST do Pub/Sub do serviço de transferência de armazenamento.
Formato de notificação
As notificações enviadas para o tópico Pub/Sub são compostas por duas partes:
- Atributos: um conjunto de pares chave:valor que descrevem o evento.
- Payload: uma string que contém os metadados do objeto alterado.
Atributos
Os atributos são pares de chave:valor contidos em todas as notificações enviadas pelo Storage Transfer Service para o seu tópico do Pub/Sub. As notificações contêm sempre o seguinte conjunto de pares de chave:valor, independentemente da carga útil da notificação:
Consulte PubsubMessage
para mais informações acerca do formato de mensagem do Pub/Sub.
Nome do atributo | Exemplo | Descrição |
---|---|---|
eventType |
TRANSFER_OPERATION_SUCCESS |
Estado do TransferOperation , de NotificationConfig.EventType |
payloadFormat |
"JSON" |
Formato da mensagem, "JSON" ou "NONE" . De NotificationConfig.PayloadFormat . |
projectId |
project-3 |
ID do projeto anfitrião da transferência. |
transferJobName |
transferJobs/123 |
Nome da tarefa de transferência. |
transferOperationName |
transferOperations/456 |
Nome da operação de transferência. |
Payload
O payload contém os metadados TransferOperation
. Quando cria uma configuração de notificação, especifica um tipo de payload a incluir nas notificações acionadas por essa configuração. Pode especificar os seguintes tipos de payload:
Tipo de payload | Descrição |
---|---|
NENHUM | Não está incluído nenhum payload na notificação. |
JSON | O payload está formatado como uma resposta JSON, em application/json. |
Exemplos de configurações de notificações do Pub/Sub
Notificar apenas transferências com falhas
Para receber mensagens apenas para transferências com falhas, envie um TransferJob
com um NotificationConfig
que filtre apenas transferências com falhas:
// 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"
},
...
}
Substitua o seguinte:
project-id
: O Google Cloud ID do projeto da transferênciatopic-id
: o nome do tópico do Pub/Sub
Notificar todas as transferências concluídas
Para receber notificações sobre todas as transferências concluídas, independentemente do estado, envie um
TransferJob
com um NotificationConfig
sem filtros EventType
:
// REST JSON format:
// https://cloud.google.com/storage-transfer/docs/create-manage-transfer-program
{
...
"notificationConfig": {
"pubsubTopic": "projects/project-id/topics/topic-id",
"payloadFormat: "JSON"
},
...
}
Substitua o seguinte:
project-id
: O Google Cloud ID do projeto da transferênciatopic-id
: o nome do tópico do Pub/Sub
Realizar ações arbitrárias numa transferência
Para realizar uma ação arbitrária, crie uma notificação do Pub/Sub usando uma função do Cloud com um acionador do Pub/Sub associada a uma função do Cloud em segundo plano. Para mais informações, consulte o tutorial do Cloud Pub/Sub.
Exemplos de ações arbitrárias:
- Enviar um email
- Iniciar uma tarefa do Dataflow
- Registar metadados no Cloud SQL
- Registar metadados no Spanner
Garantias de entrega
O serviço de transferência de armazenamento envia notificações para qualquer transferência TransferOperations
iniciada
depois de adicionar uma configuração de notificação e garante a entrega
ao Pub/Sub, pelo menos, uma vez. O Pub/Sub também oferece uma entrega, pelo menos, uma vez ao destinatário, o que significa que pode receber várias mensagens, com vários IDs, que representam o mesmo evento do serviço de transferência de armazenamento.
Não é garantido que as notificações sejam publicadas na ordem em que o Pub/Sub as recebe.
Se não for possível entregar uma notificação de forma consistente a um tópico do Pub/Sub, o serviço de transferência de armazenamento pode eliminar a notificação após 7 dias. A falha de entrega pode ocorrer quando o tópico do Pub/Sub já não existe, quando o serviço de transferência de armazenamento já não tem autorização para publicar no tópico ou quando o projeto proprietário do tópico excede a respetiva quota de publicação.