O Serviço de transferência do Cloud Storage é compatível com arquivos ou objetos específicos, que são especificados usando um manifesto. Um manifesto é um arquivo CSV enviado ao Cloud Storage que contém uma lista de arquivos ou objetos para o Serviço de transferência do Cloud Storage.
Um manifesto pode ser usado para as seguintes transferências:
Do AWS S3, Azure Blobstore ou Cloud Storage para um bucket do Cloud Storage.
De um sistema de arquivos para um bucket do Cloud Storage.
Do armazenamento compatível com S3 para um bucket do Cloud Storage.
De um bucket do Cloud Storage para um sistema de arquivos.
Entre dois sistemas de arquivos.
De uma origem HTTP/HTTPS publicamente acessível a um bucket do Cloud Storage. Siga as instruções em Criar uma lista de URLs, já que o formato do manifesto é exclusivo para listas de URLs.
Criar um manifesto
Os manifestos precisam ser formatados como CSV e podem conter qualquer caractere UTF-8. A primeira coluna precisa ser um nome de arquivo ou de objeto especificado como uma string.
Os arquivos de manifesto não são compatíveis com caracteres curinga. O valor precisa ser um nome de arquivo ou de objeto específico. Nomes de pastas sem nome de arquivo ou de objeto não são compatíveis.
O tamanho máximo do arquivo de manifesto é de 1 GiB, o que equivale a aproximadamente 1 milhão de linhas. Se você precisar transferir um arquivo de manifesto maior que 1 GiB, será possível dividi-lo em vários arquivos e executar vários jobs de transferência.
Se o nome de um arquivo ou objeto tiver vírgulas, o nome precisa estar entre
aspas duplas, de acordo com os
padrões CSV.
Por exemplo, "object1,a.txt"
.
Recomendamos testar a transferência com um pequeno subconjunto de arquivos ou objetos para evitar chamadas de API desnecessárias devido a erros de configuração.
É possível monitorar o status das transferências na página de jobs de transferência. Os arquivos ou objetos que não são transferidos são listados nos registros de transferência.
Transferências do sistema de arquivos
Para criar um manifesto de arquivos em um sistemas, crie um arquivo CSV com uma única coluna contendo os caminhos dos arquivos em relação ao diretório raiz especificado na criação do job de transferência.
Por exemplo, talvez você queira transferir os seguintes arquivos do sistema:
Caminho do arquivo |
---|
rootdir/dir1/subdir1/file1.txt |
rootdir/file2.txt |
rootdir/dir2/subdir1/file3.txt |
Seu manifesto vai ser semelhante ao exemplo a seguir:
dir1/subdir1/file1.txt
file2.txt
dir2/subdir1/file3.txt
Transferências de armazenamento de objetos
Para criar um manifesto de objetos, crie um arquivo CSV em que a primeira coluna contenha os nomes de objetos em relação ao nome do bucket e caminho especificados na criação do job de transferência. Todos os objetos precisam estar no mesmo bucket.
Também é possível especificar uma segunda coluna opcional com o número de geração do Cloud Storage da versão específica a ser transferida.
Por exemplo, talvez você queira transferir os seguintes objetos:
Caminho do objeto | Número de geração do Cloud Storage |
---|---|
SOURCE_PATH/object1.pdf |
1664826685911832 |
SOURCE_PATH/object2.pdf |
|
SOURCE_PATH/object3.pdf |
1664826610699837 |
Seu manifesto vai ser semelhante ao exemplo a seguir:
object1.pdf,1664826685911832
object2.pdf
object3.pdf,1664826610699837
Salve o arquivo de manifesto com qualquer nome de arquivo e uma extensão .csv
.
Transferências HTTP/HTTPS
Para transferir arquivos específicos de uma origem HTTP ou HTTPS, consulte as instruções em Criar uma lista de URLs.
Publicar o manifesto
Depois de criar o manifesto, disponibilize-o para o Serviço de transferência do Cloud Storage. O Serviço de transferência do Cloud Storage pode acessar o arquivo em um bucket do Cloud Storage ou no sistema de arquivos.
Fazer upload do manifesto para o Cloud Storage
Você pode armazenar o arquivo de manifesto em qualquer bucket do Cloud Storage.
O agente de serviço que executa a
transferência precisa ter a permissão storage.objects.get
para o bucket que contém
o manifesto. Consulte
Conceder as permissões necessárias
para ver instruções sobre como encontrar o ID do agente de serviço e conceder permissões
a esse agente de serviço em um bucket.
Para ver instruções sobre como fazer upload do manifesto para um bucket, consulte Fazer upload de objetos na documentação do Cloud Storage.
Por exemplo, para usar a CLI gcloud
para fazer upload de um arquivo para o Cloud Storage,
use o comando gcloud storage cp
:
gcloud storage cp MANIFEST.CSV gs://DESTINATION_BUCKET_NAME/
Em que:
MANIFEST.CSV
é o caminho local para o arquivo de manifesto. Por exemplo,Desktop/manifest01.csv
.DESTINATION_BUCKET_NAME
é o nome do bucket de upload do objeto. Por exemplo,my-bucket
.
Se funcionar, a resposta será parecida com esta:
Completed files 1/1 | 164.3kiB/164.3kiB
Criptografe um manifesto usando as chaves de criptografia do Cloud KMS gerenciadas pelo cliente. Nesse caso, verifique se todas as contas de serviço que acessam o manifesto receberam chaves de criptografia correspondentes. Não há suporte para chaves fornecidas pelo cliente.
Armazenar o manifesto em um sistema de arquivos
Você pode armazenar o arquivo de manifesto no sistema de arquivos de origem ou de destino.
O local do arquivo precisa ser acessível aos agentes de transferência. Se você restringir o acesso ao diretório para seus agentes, verifique se o arquivo de manifesto está localizado em um diretório montado.
Iniciar uma transferência
Não modifique o arquivo de manifesto até que uma operação de transferência seja concluída. Recomendamos bloquear o arquivo de manifesto quando uma transferência estiver em andamento.
Console do Cloud
Para iniciar uma transferência com um manifesto do Console do Cloud:
Siga as instruções em Criar transferências para selecionar a origem, o destino e as opções.
Na etapa final, Escolher configurações, marque a caixa de seleção Fornecer lista de arquivos a serem transferidos por arquivo de manifesto.
Digite o local do arquivo de manifesto.
gcloud
Para transferir os arquivos ou objetos listados no manifesto, inclua a sinalização --manifest-file=MANIFEST_FILE
com o comando gcloud transfer jobs create
.
gcloud transfer jobs create SOURCE DESTINATION \
--manifest-file=MANIFEST_FILE
MANIFEST_FILE pode ser qualquer um dos seguintes valores:
O caminho para o arquivo CSV em um bucket do Cloud Storage:
--manifest-file=gs://my_bucket/sample_manifest.csv
Consulte Fazer upload do manifesto para o Cloud Storage para ver detalhes sobre as permissões necessárias, se o bucket ou arquivo não for público.
O caminho relativo do sistema de arquivos SOURCE, incluindo qualquer caminho especificado:
--manifest-file=source://relative_path/sample_manifest.csv
O caminho relativo do sistema de arquivos DESTINATION, incluindo qualquer caminho especificado:
--manifest-file=destination://relative_path/sample_manifest.csv
REST + bibliotecas de cliente
REST
Para transferir os arquivos ou objetos listados no manifesto, faça
uma chamada de API createTransferJob
que especifique um transferSpec
com o
campo transferManifest
adicionado. Exemplo:
POST https://storagetransfer.googleapis.com/v1/transferJobs ... "transferSpec": { "posixDataSource": { "rootDirectory": "/home/", }, "gcsDataSink": { "bucketName": "GCS_NEARLINE_SINK_NAME", "path": "GCS_SINK_PATH", }, "transferManifest": { "location": "gs://my_bucket/sample_manifest.csv" } }
O arquivo de manifesto pode ser armazenado em um bucket do Cloud Storage ou no
sistema de arquivos de origem ou de destino. Os buckets do Cloud Storage precisam usar o
prefixo gs://
e incluir o caminho completo, incluindo o nome
do bucket. Os locais do sistema de arquivos precisam usar um prefixo source://
ou destination://
e são relativos à origem ou ao destino do sistema de arquivos e ao diretório raiz opcional.
Go
Java
Node.js
Python
Os objetos ou arquivos do manifesto não são necessariamente transferidos na ordem listada.
Se o manifesto incluir arquivos que já existem no destino, eles serão ignorados, a menos que a opção substituir objetos que já existem no coletor seja especificada.
Se o manifesto incluir objetos que existem em uma versão diferente no destino, o objeto do destino vai ser substituído pela versão de origem do objeto. Se o destino for um bucket com controle de versão, vai ser criada uma nova versão do objeto.
A seguir
- Saiba como filtrar objetos em transferências.
- Saiba como programar jobs de transferência.