Este documento descreve como configurar transferências de dados baseadas em eventos do Armazenamento de Blobs do Azure ou do Data Lake Storage Gen2 para o Cloud Storage usando o Serviço de transferência do Cloud Storage. As transferências baseadas em eventos transferem automaticamente objetos novos e atualizados do contêiner do Azure para o Cloud Storage. As exclusões de objetos não são detectadas. Excluir um objeto na origem não exclui o objeto associado no bucket de destino.
As transferências baseadas em eventos usam o Azure Event Grid e as filas de armazenamento do Azure para notificar o Serviço de transferência do Cloud Storage sobre as mudanças no contêiner do Azure. Quando um evento, como a criação de um novo blob, ocorre no contêiner de origem, o Azure Event Grid envia uma notificação para uma fila de armazenamento do Azure configurada. O Serviço de transferência do Cloud Storage monitora continuamente essa fila e inicia uma transferência com base nos eventos recebidos.
Antes de começar
Siga as instruções para conceder as permissões necessárias no bucket do Cloud Storage de destino:
Criar uma fila de armazenamento do Azure
Crie uma fila de armazenamento do Azure que vai receber notificações do Azure Event Grid.
- No portal do Azure, navegue até sua conta de armazenamento do Azure.
- No menu de navegação à esquerda, em Armazenamento de dados, selecione Filas.
- Clique em + Fila para criar uma nova fila.
- Forneça um nome para a fila (por exemplo,
transfer-notifications) e clique em OK. - Depois de criada, recupere o endereço da fila do Azure. O endereço normalmente está no formato:
AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME.
Ativar notificações de eventos do Armazenamento de Blobs do Azure para a fila do Azure
Configure o Azure Event Grid para enviar notificações de eventos de armazenamento de blobs para a fila do Azure que você criou.
- No portal do Azure, navegue até a conta de armazenamento que contém o contêiner de armazenamento de blobs que você quer monitorar.
- No menu de navegação à esquerda, em Serviço de blobs, selecione Eventos.
- Clique em + Assinatura de evento.
Configure a assinatura do evento:
- Detalhes da assinatura do evento:
- Forneça um Nome da assinatura do evento (por exemplo,
blob-transfer-events). - Forneça um Nome do tópico do sistema (por exemplo,
my-blob-events-topic).
- Forneça um Nome da assinatura do evento (por exemplo,
- Tipos de evento:
- Selecione os seguintes tipos de evento:
- Blob criado
- Diretório criado
- Blob renomeado
- Diretório renomeado
- Nível de blob alterado
- Selecione os seguintes tipos de evento:
- Detalhes do endpoint:
- Tipo de endpoint: selecione Fila de armazenamento.
- Clique em Selecionar um endpoint e selecione a fila do Azure que você criou anteriormente.
Filtros:
- Clique em Ativar a filtragem de assunto.
Adicione o seguinte como o filtro O assunto começa com para limitar as notificações a um contêiner específico:
/blobServices/default/containers/AZURE_CONTAINER_NAME/Substitua AZURE_CONTAINER_NAME pelo nome do contêiner de armazenamento de blobs.
(Opcional) Para filtrar eventos de blobs com um prefixo específico no contêiner, use:
/blobServices/default/containers/AZURE_CONTAINER_NAME/blobs/BLOB_PREFIX
- Detalhes da assinatura do evento:
Clique em Criar.
Configurar o acesso à fila do Azure
O Serviço de transferência do Cloud Storage precisa de permissão para acessar a fila do Azure e ler as mensagens dela. É possível fazer a autenticação usando um token de assinatura de acesso compartilhado (SAS, na sigla em inglês) ou uma identidade federada.
Token SAS
Siga as instruções para fazer a autenticação com um token SAS e inclua os seguintes itens:
- Serviços permitidos: blob e fila
- Permissões permitidas: leitura, lista e processo
Identidade federada
Siga as instruções para fazer a autenticação com identidade federada. Além de conceder acesso do aplicativo ao contêiner do Azure Storage, também é necessário conceder acesso à fila do Azure. Para fazer isso, adicione o papel de Processador de mensagens de dados da fila de armazenamento ao aplicativo para a fila do Azure.
Criar um job de transferência com um fluxo de eventos
Depois que a fila do Azure e as notificações de eventos forem configuradas, crie o job do Serviço de transferência do Cloud Storage com um fluxo de eventos.
Depois de criado, o job de transferência começa a ser executado e um listener de eventos aguarda notificações na fila do Azure. A página de detalhes do job mostra uma operação a cada hora e inclui detalhes sobre os dados transferidos para cada job.
Google Cloud Console do
Acesse a página Criar job de transferência no Google Cloud console do.
Em Tipo de origem, selecione Armazenamento de blobs do Azure ou Data Lake Storage Gen2.
Em Tipo de destino, selecione Google Cloud Storage.
Em Modo de programação, selecione Baseado em eventos.
No campo Nome do fluxo de eventos, insira o endereço da fila do Azure.
Conclua as etapas restantes normalmente para criar um job de transferência, incluindo detalhes de origem e destino e autenticação.
Também é possível digitar um horário de início e de término para a transferência. Se você não especificar um horário, a transferência será iniciada imediatamente e será executada até ser interrompida manualmente.
Google Cloud CLI
Para criar um job de transferência baseado em eventos usando a CLI gcloud, use o comando gcloud transfer jobs create com a flag --event-stream-name:
gcloud transfer jobs create \
https://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/AZURE_CONTAINER_NAME \
gs://DESTINATION_BUCKET \
--source-creds-file=SOURCE_CREDS_FILE \
--event-stream-name=AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME \
--event-stream-starts=EVENT_STREAM_STARTS \
--event-stream-expires=EVENT_STREAM_EXPIRES
Substitua os marcadores pelos valores reais:
- AZURE_STORAGE_ACCOUNT_NAME e AZURE_CONTAINER_NAME: o nome da conta e do contêiner do Armazenamento de Blobs do Azure.
- DESTINATION_BUCKET: o bucket de destino do Cloud Storage.
- SOURCE_CREDS_FILE: o caminho relativo para um arquivo local na sua máquina que contém o token SAS ou a identidade federada configuração.
- AZURE_QUEUE_NAME: o nome da fila do Azure.
- EVENT_STREAM_STARTS: quando começar a detectar eventos
usando o formato de data e hora %Y-%m-%dT%H:%M:%S%z (por exemplo,
2020-04-12T06:42:12+04:00). Se não estiver definido, o job vai começar a ser executado e detectar eventos após o envio bem-sucedido do comando de criação do job . - EVENT_STREAM_EXPIRES: quando parar de detectar eventos. Se não estiver definido, o job vai continuar até ser interrompido manualmente.
Para uma lista completa de campos compatíveis, consulte a
gcloud transfer jobs create referência.
API REST
Defina um job de transferência baseado em eventos usando o proto TransferJob:
{
"description": "Test Azure to GCS transfer via event stream.",
"project_id": "PROJECT_ID",
"transfer_spec": {
"azure_blob_storage_data_source": {
"storage_account": "AZURE_STORAGE_ACCOUNT_NAME",
"container": "AZURE_CONTAINER_NAME",
"federated_identity_config": {
"client_id": "CLIENT_ID",
"tenant_id": "TENANT_ID"
}
},
"gcs_data_sink": {
"bucket_name": "DESTINATION_BUCKET"
},
"object_conditions": {
// optional object conditions (include_prefixes, etc)
},
"transfer_options": {}
},
"event_stream": {
"name": "AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME",
"event_stream_start_time": EVENT_STREAM_START_TIME,
"event_stream_expiration_time": EVENT_STREAM_EXPIRATION_TIME
},
"status": "ENABLED"
}
Os campos de hora de início e de validade são opcionais:
event_stream_start_time: a hora em que começar a detectar eventos no formatoYYYY-MM-DDTHH:MM:SSZ. Se não for especificado, o listener será iniciado imediatamente.event_stream_expiration_time: a hora em que o listener do fluxo de eventos expira no formatoYYYY-MM-DDTHH:MM:SSZ. Se não for especificado, o listener vai continuar até que o job de transferência seja desativado ou excluído.