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.
- Não pode negar o acesso ao objeto com um
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://
ouhttps://
. - 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çãoroles/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çãoroles/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
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 bucket de lista de URLs.
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:
Em Tipo de origem, selecione Lista de URLs e clique em Passo seguinte.
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.