Transfira de URLs públicos para o Cloud Storage

O Serviço de transferência de armazenamento pode copiar ficheiros de uma lista de URLs públicos para o seu contentor do Cloud Storage.

Quando cria uma transferência, fornece um link para um ficheiro de valores separados por tabulação (TSV) que contém os URLs e os detalhes dos objetos a transferir. O ficheiro TSV pode ser alojado em qualquer localização HTTP ou HTTPS acessível publicamente ou pode ser armazenado num contentor do Cloud Storage.

Esta página explica como criar uma lista de URLs e transmiti-la ao comando de criação de tarefas.

Requisitos dos ficheiros de origem

  • Os URLs têm de ser acessíveis publicamente e usar protocolos HTTP ou HTTPS.
  • O servidor que aloja cada objeto:
    • Não pode negar o acesso ao objeto com um robots.txt.
    • Suporta pedidos Range.
    • Devolve um cabeçalho Content-Length em cada resposta.

Formato da lista de URLs

Uma lista de URLs tem de cumprir os seguintes requisitos:

  • O ficheiro tem de estar formatado como valores separados por tabulações.
  • Os URLs têm de estar por ordem lexicográfica UTF-8.
  • A primeira linha tem de especificar TsvHttpData-1.0.
  • Após a primeira linha, especifique um objeto por linha.
  • Cada linha tem de conter o URL e também pode conter o tamanho do ficheiro e a soma de verificação MD5 codificada em base64 do objeto.

Segue-se um ficheiro TSV de exemplo que especifica dois objetos a transferir. Tenha em atenção que, nesta página, os separadores são renderizados como espaços. Para o seu próprio ficheiro, certifique-se de que usa separadores entre os campos.

TsvHttpData-1.0
https://example.com/myfile.pdf    1357    wHENa08V36iPYAsOa2JAdw==
https://example2.com/images/dataset1/flower.png    2468    R9acAaveoPd2y8nniLUYbw==

Cada linha contém:

  • O URL HTTP ou HTTPS de um objeto de origem.
  • (Opcional) O tamanho do objeto em bytes.

    Certifique-se de que o tamanho especificado corresponde ao tamanho real do objeto quando é obtido. Se o tamanho do objeto recebido pelo Cloud Storage não corresponder ao tamanho especificado, a transferência do objeto falha.

  • (Opcional) A soma de verificação MD5 codificada em base64 do objeto.

    Certifique-se de que a soma de verificação MD5 especificada corresponde à soma de verificação MD5 calculada a partir dos bytes transferidos. Se a soma de verificação MD5 do objeto recebido pelo Cloud Storage não corresponder à soma de verificação MD5 especificada, a transferência do objeto falha.

Embora os valores do tamanho do objeto e da soma de verificação MD5 sejam opcionais, recomendamos vivamente que os inclua para ajudar a garantir a integridade dos dados.

Alojamento da lista de URLs

A lista de URLs pode ser alojada numa de duas localizações:

  • Um URL acessível publicamente.
  • Um contentor do Cloud Storage ao qual o agente de serviço do Serviço de transferência de armazenamento tem acesso.

URLs acessíveis publicamente

Quando armazena a lista de URLs num URL acessível publicamente, aplicam-se os seguintes requisitos:

  • O URL tem de começar por http:// ou https://.
  • O servidor tem de definir um cabeçalho Etag forte na resposta HTTP quando devolve a lista de URLs.

Por exemplo, pode armazenar a lista num contentor do Cloud Storage e partilhar o objeto publicamente para obter um link para o mesmo.

Contentores do Cloud Storage

Para evitar armazenar a sua lista numa localização pública, pode armazená-la num contentor do Cloud Storage e conceder acesso ao agente do serviço para o Serviço de transferência de dados.

O agente de serviço tem de ter as seguintes autorizações:

  • A autorização storage.object.get no objeto. Isto pode ser concedido através da atribuição da função roles/storage.legacyObjectReader no contentor ou com uma função personalizada.
  • A autorização storage.buckets.get no contentor. Isto pode ser concedido através da atribuição da função roles/storage.legacyBucketReader ou com uma função personalizada.

Para conceder autorizações ao agente de serviço:

Encontre o email do agente de serviço

  1. Aceda à página de referência googleServiceAccounts.get.

    É aberto um painel interativo com o título Experimente este método.

  2. 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 bucket de lista de URLs.

  3. Clique em Executar.

O email do agente de serviço é devolvido como o valor de accountEmail e usa o formato project-PROJECT_NUMBER@storage-transfer-service..

Copie este valor.

Conceda as funções necessárias

Para conceder a função roles/storage.objectViewer e a função roles/storage.bucketViewer ao agente de serviço no contentor que contém a lista de URLs, siga as instruções em Defina e faça a gestão de políticas de IAM em contentores.

O principal que está a adicionar é o endereço de email do agente de serviço. Se necessário, o identificador principal é serviceAccount. Por exemplo, serviceAccount:project-PROJECT_NUMBER@storage-transfer-service..

Crie uma tarefa de transferência de lista de URLs

Para especificar uma lista de URLs quando criar uma tarefa de transferência, siga estas instruções:

Google Cloud consola

Siga as instruções em Crie uma tarefa de transferência.

Ao escolher uma origem:

  1. Em Tipo de origem, selecione Lista de URLs e clique em Passo seguinte.

  2. Em URL do ficheiro TSV, indique o URL do ficheiro de valores separados por tabulações (TSV). O URL é um endereço HTTP/HTTPS (por exemplo, https://example.com/urllist.tsv) ou um caminho do Cloud Storage (por exemplo, gs://my-bucket/urllist.tsv).

CLI gcloud

Para criar uma nova tarefa de transferência, use o comando gcloud transfer jobs create.

gcloud transfer jobs create \
  SOURCE DESTINATION

Para transferências de listas de URLs, o valor de SOURCE é o URL do ficheiro TSV. O URL é um endereço HTTP/HTTPS (por exemplo, https://example.com/urllist.tsv) ou um caminho do Cloud Storage (por exemplo, gs://my-bucket/urllist.tsv).

Para mais informações sobre como criar transferências com a CLI gcloud, consulte o artigo Crie tarefas de transferência.

REST

Para criar uma tarefa de transferência de lista de URLs através da API REST, especifique o URL do ficheiro TSV no campo listUrl:

{
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "httpDataSource": {
      "listUrl": "URL"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    }
  },
  "status": "ENABLED"
}

O valor de URL é um endereço HTTP/HTTPS (por exemplo, https://example.com/urllist.tsv) ou um caminho do Cloud Storage (por exemplo, gs://my-bucket/urllist.tsv).

Para mais detalhes sobre a criação de transferências através da API REST, consulte a referência da API REST.