O serviço de transferência de armazenamento pode ouvir notificações de eventos para transferir automaticamente dados que foram adicionados ou atualizados num contentor do Cloud Storage. Google Cloud Saiba mais sobre as vantagens das transferências baseadas em eventos.
As transferências baseadas em eventos do Cloud Storage usam notificações do Pub/Sub para saber quando os objetos no contentor de origem foram modificados ou adicionados. As eliminações de objetos não são detetadas. Se eliminar um objeto na origem, não elimina o objeto associado no contentor de destino.
As transferências baseadas em eventos usam sempre um contentor do Cloud Storage como destino.
Configure autorizações
Além das autorizações necessárias para todas as tarefas de transferência, as transferências baseadas em eventos requerem a função Pub/Sub Subscriber
.
Encontre o nome do agente do serviço do Storage Transfer Service para o seu projeto:
Aceda à página de referência
googleServiceAccounts.get
.É aberto um painel interativo com o título Experimente este método.
No painel, em Parâmetros do pedido, introduza o ID do projeto. O projeto que especificar aqui tem de ser o projeto que está a usar para gerir o serviço de transferência de armazenamento, que pode ser diferente do projeto do contentor de origem.
Clique em Executar.
O email do agente de serviço é devolvido como o valor de
accountEmail
. Copiar este valor.O email do agente de serviço usa o formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.Conceda a função
Pub/Sub Subscriber
ao agente do serviço do Serviço de transferência de armazenamento.Cloud Console
Siga as instruções em Controlar o acesso através da Google Cloud consola para conceder a função
Pub/Sub Subscriber
ao serviço Storage Transfer Service. A função pode ser concedida ao nível do tópico, da subscrição ou do projeto.gcloud
CLISiga as instruções em Defina uma política para adicionar a seguinte associação:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com" }
Configure o Pub/Sub
Certifique-se de que cumpriu os pré-requisitos para usar o Pub/Sub com o Cloud Storage.
Crie uma notificação do Pub/Sub para o contentor do Cloud Storage de origem.
Não pode gerir as notificações do Pub/Sub com a Google Cloud consola. Em alternativa, use a CLI gcloud ou uma das bibliotecas de cliente disponíveis.
gcloud storage buckets notifications create gs://SOURCE_BUCKET_NAME --topic=TOPIC_NAME
Crie uma subscrição de obtenção para o tópico. Tem de criar uma subscrição separada para cada tarefa de transferência.
O exemplo seguinte mostra o comando da CLI gcloud para criar uma subscrição de obtenção. Para ver instruções da consola e código da biblioteca de cliente, consulte o artigo Crie uma subscrição de obtenção.
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME --ack-deadline=300
Crie uma tarefa de transferência
Pode usar a API REST ou a Google Cloud consola para criar uma tarefa de transferência baseada em eventos.
Não inclua informações confidenciais, como informações de identificação pessoal (IIP) ou dados de segurança, no nome da tarefa de transferência. Os nomes dos recursos podem ser propagados para os nomes de outros Google Cloud recursos e podem ser expostos a sistemas internos da Google fora do seu projeto.
Cloud Console
Aceda à página Criar tarefa de transferência na Google Cloud consola.
Selecione Cloud Storage como origem e destino.
No Modo de agendamento, selecione Orientado por eventos e clique em Passo seguinte.
Selecione o contentor de origem para esta transferência.
Na secção Stream de eventos, introduza o nome da subscrição:
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID
Opcionalmente, defina filtros e, de seguida, clique em Passo seguinte.
Selecione o contentor de destino para esta transferência.
Opcionalmente, introduza uma hora de início e fim para a transferência. Se não especificar uma hora, a transferência começa imediatamente e é executada até ser parada manualmente.
Especifique as opções de transferência. Estão disponíveis mais informações na página Crie transferências.
Clique em Criar.
Depois de criado, o trabalho de transferência começa a ser executado e um ouvinte de eventos aguarda notificações na subscrição do Pub/Sub. A página de detalhes do trabalho mostra uma operação por hora e inclui detalhes sobre os dados transferidos para cada trabalho.
REST
Para criar uma transferência orientada por eventos através da API REST, envie o seguinte objeto JSON para o ponto final transferJobs.create:
transfer_job { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec" { "gcsDataSource" { "bucketName": "GCS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
O eventStreamStartTime
e o eventStreamExpirationTime
são opcionais.
Se a hora de início for omitida, a transferência começa imediatamente. Se a hora de fim for omitida, a transferência continua até ser interrompida manualmente.
Bibliotecas cliente
Go
Para saber como instalar e usar a biblioteca cliente do Serviço de transferência de armazenamento, consulte o artigo Bibliotecas cliente do Serviço de transferência de armazenamento. Para mais informações, consulte a documentação de referência da API Go do Storage Transfer Service.
Para se autenticar no serviço de transferência de armazenamento, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca cliente do Serviço de transferência de armazenamento, consulte o artigo Bibliotecas cliente do Serviço de transferência de armazenamento. Para mais informações, consulte a documentação de referência da API Java do Storage Transfer Service.
Para se autenticar no serviço de transferência de armazenamento, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca cliente do Serviço de transferência de armazenamento, consulte o artigo Bibliotecas cliente do Serviço de transferência de armazenamento. Para mais informações, consulte a documentação de referência da API Node.js do Storage Transfer Service.
Para se autenticar no serviço de transferência de armazenamento, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca cliente do Serviço de transferência de armazenamento, consulte o artigo Bibliotecas cliente do Serviço de transferência de armazenamento. Para mais informações, consulte a documentação de referência da API Python do Storage Transfer Service.
Para se autenticar no serviço de transferência de armazenamento, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Monitorize uma transferência baseada em eventos
Quando cria uma transferência orientada por eventos, o serviço de transferência do Storage cria uma tarefa de transferência. Quando a hora de início é atingida, uma operação de transferência começa a ser executada e um ouvinte de eventos aguarda notificações da fila do Pub/Sub.
A operação de transferência é executada com o estado in progress
durante aproximadamente 24 horas. Após 24 horas, a operação termina e começa uma nova operação.
É criada uma nova operação a cada 24 horas até atingir a hora de fim da tarefa de transferência ou até a tarefa ser interrompida manualmente.
Se uma transferência de ficheiros estiver em curso quando a operação estiver agendada para terminar, a operação atual permanece em curso até que o ficheiro seja totalmente transferido. É iniciada uma nova operação e as duas operações são executadas em simultâneo até a operação antiga terminar. Todos os eventos detetados durante este período são processados pela nova operação.
Para ver a operação atual e todas as operações concluídas:
Google Cloud consola
Aceda à página Serviço de transferência de armazenamento na Google Cloud consola.
Na lista de tarefas, selecione o separador Tudo ou Cloud para cloud.
Clique no ID da tarefa da transferência. A coluna Modo de agendamento identifica todas as transferências baseadas em eventos em comparação com as transferências em lote.
Selecione o separador Operações. São apresentados detalhes da operação atual e as operações concluídas são apresentadas na tabela Histórico de execuções. Clique em qualquer operação concluída para ver detalhes adicionais.
gcloud
Para monitorizar o progresso de uma tarefa em tempo real, use o comando
gcloud transfer jobs monitor
. A resposta mostra a operação atual, a hora de início da tarefa, a quantidade de dados transferidos, os bytes ignorados e as contagens de erros.
gcloud transfer jobs monitor JOB_NAME
Para obter o nome da operação atual:
gcloud transfer jobs describe JOB_NAME --format="value(latestOperationName)"
Para listar as operações atuais e concluídas:
gcloud transfer operations list --job-names=JOB_NAME
Para ver detalhes sobre uma operação:
gcloud transfer operations describe OPERATION_NAME