Este documento descreve como configurar transferências de dados orientadas a eventos do Azure Blob Storage ou 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 seu 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 orientadas por 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 mudanças no seu 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 do Azure Storage 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 de destino do Cloud Storage:
Criar uma fila do Azure Storage
Crie uma fila do Azure Storage que vai receber notificações do Azure Event Grid.
- No portal do Azure, navegue até sua conta do Azure Storage.
- No menu de navegação à esquerda, em Armazenamento de dados, selecione Filas.
- Clique em + Fila para criar uma fila.
- Dê um nome à fila (por exemplo,
transfer-notifications) e clique em OK. - Depois de criar, recupere o endereço da fila do Azure. O endereço geralmente está no formato:
AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME.
Ativar notificações de eventos do Azure Blob Storage 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 blob, selecione Eventos.
- Clique em + Assinatura de evento.
Configure a assinatura de evento:
- Detalhes da assinatura de evento:
- Informe um Nome da assinatura de eventos (por exemplo,
blob-transfer-events). - Forneça um Nome do tema do sistema (por exemplo,
my-blob-events-topic).
- Informe um Nome da assinatura de eventos (por exemplo,
- Tipos de eventos:
- Selecione os seguintes tipos de evento:
- Blob criado
- Diretório criado
- Blob renomeado
- Diretório renomeado
- Nível do blob alterado
- Selecione os seguintes tipos de evento:
- Detalhes do endpoint:
- Tipo de endpoint: selecione Fila de armazenamento.
- Clique em Selecionar um endpoint e escolha a fila do Azure que você criou antes.
Filters:
- 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 de evento:
Clique em Criar.
Configurar o acesso à fila do Azure
O Serviço de transferência do Storage precisa de permissão para acessar a fila do Azure e ler as mensagens dela. É possível autenticar usando um token de assinatura de acesso compartilhado (SAS) ou uma identidade federada.
Token SAS
Siga as instruções para autenticar com um token SAS e inclua os seguintes itens:
- Serviços permitidos: Blob e Queue
- Permissões permitidas: leitura, lista e processo
Identidade federada
Siga as instruções para autenticar com identidade federada. Além de conceder ao aplicativo acesso ao contêiner do Azure Storage, você também precisa conceder acesso à fila do Azure. Para isso, adicione a função 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 de configurar a fila do Azure e as notificações de eventos, crie um 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.
Console do Google Cloud
Acesse a página Criar job de transferência no console Google Cloud .
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 sua 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 orientado por 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 seus 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 de SAS ou a configuração de identidade federada.
- AZURE_QUEUE_NAME: o nome da sua 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 for definido, o job vai começar a ser executado e detectar eventos após o envio bem-sucedido do comando "criar job". - EVENT_STREAM_EXPIRES: quando parar de detectar eventos. Se não for definido, o job vai continuar até ser interrompido manualmente.
Para uma lista completa de campos compatíveis, consulte a referência gcloud transfer jobs create.
API REST
Defina um job de transferência orientado a 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 expiração são opcionais:
event_stream_start_time: o horário em que a escuta de eventos começa no formatoYYYY-MM-DDTHH:MM:SSZ. Se não for especificado, o listener será iniciado imediatamente.event_stream_expiration_time: o horário em que o listener de 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.