Uploads e downloads

Nesta página, abordaremos conceitos relacionados ao upload e download de objetos. É possível fazer upload e armazenar qualquer tipo MIME de dados de até 5 TiB.

Uploads

Envie solicitações de upload para o Cloud Storage das seguintes maneiras:

  • Upload de solicitação única. Use se o arquivo for pequeno o suficiente para fazer upload na íntegra se a conexão falhar.

    • A API JSON distingue ainda mais os uploads de mídia, em que apenas os dados do objeto são incluídos na solicitação, e os uploads de várias partes da API JSON, em que tanto objetos de dados quanto metadados do objeto, são incluídos na solicitação.
  • Upload retomável. Use para fazer uma transferência mais confiável, o que é especialmente importante para arquivos grandes. Os uploads retomáveis são uma boa opção para a maioria dos aplicativos, já que também funcionam para arquivos pequenos ao custo de uma solicitação HTTP adicional por upload. Também é possível usar uploads retomáveis para executar transferências de streaming, o que permite fazer upload de um objeto de tamanho desconhecido.

  • Upload de várias partes da API XML. Um método de upload compatível com uploads de várias partes do Amazon S3. Os arquivos são enviados em partes e agrupados em um único objeto com a solicitação final. Os uploads de várias partes da API XML permitem que você faça upload das partes em paralelo, possivelmente reduzindo o tempo para concluir o upload geral.

Usando esses tipos básicos de upload, estratégias de upload mais avançadas são possíveis, como uploads compostos paralelos e uploads de streaming.

Considerações sobre tamanho do upload

Ao escolher usar um upload de solicitação única em vez de um upload retomável ou de upload de várias partes da API XML, considere o tempo que você perderá se ocorrer uma falha na rede e você precisar reiniciar o upload desde o início. Para conexões mais rápidas, o tamanho do corte normalmente é maior.

Por exemplo, digamos que você esteja disposto a tolerar perder 30 segundos:

  • Se você fizer upload de um sistema local com uma velocidade de upload média de 8 Mbps, poderá usar uploads de solicitação única para arquivos de até 30 MB.

  • Se você fizer o upload de um serviço na região que tenha uma média de 500 Mbps de velocidade de upload, o tamanho do corte dos arquivos será de quase 2 GB.

Uploads compostos paralelos

Uma estratégia para fazer o upload de arquivos grandes é chamada de uploads compostos paralelos. Nesse upload, um arquivo é dividido em até 32 partes, os blocos são enviados em paralelo aos objetos temporários, o objeto final é recriado usando os objetos temporários e o objetos temporários são excluídos.

Os uploads compostos paralelos podem ser significativamente mais rápidos quando a velocidade do disco e da rede não estão limitando os fatores. No entanto, o objeto final armazenado no seu bucket é um objeto composto, que tem apenas um hash crc32c, não um hash MD5. Como resultado, você precisa usar o crcmod para realizar verificações de integridade ao fazer o download do objeto com a gsutil ou outros aplicativos Python. Só faça uploads compostos paralelos se o seguinte for aplicável:

  • Qualquer usuário do Python que precise fazer o download dos seus objetos tem o google-crc32c ou o crcmod instalado.

  • Qualquer usuário da gsutil que precise fazer o download dos seus objetos tem o crcmod instalado.

    Por exemplo, se você usar o gsutil para fazer upload de recursos de vídeo que são veiculados apenas por um aplicativo Java, os uploads compostos paralelos são uma boa escolha, porque há implementações CRC32C eficientes disponíveis em Java.

  • Você não precisa que os objetos enviados tenham um hash MD5.

Suporte da gsutil

É possível configurar como e quando a gsutil executa uploads compostos paralelos, que são desativados por padrão, modificando os dois parâmetros a seguir:

  • parallel_composite_upload_threshold: o tamanho total mínimo do arquivo para executar um upload composto paralelo. É possível desativar todos os uploads compostos paralelos no gsutil definindo esse valor como 0.

  • parallel_composite_upload_component_size: o tamanho máximo de cada objeto temporário. O parâmetro será ignorado se o tamanho total do arquivo for tão grande que exija mais de 32 partes desse tamanho.

É possível modificar os dois parâmetros por comando usando a opção de nível superior -o ou para todos os comandos da gsutil editando o arquivo de configuração .boto:

Não é preciso mais espaço no disco local ao usar o gsutil para realizar uploads compostos paralelos. Se um upload composto paralelo falhar antes da composição, execute o comando gsutil novamente para aproveitar os uploads retomáveis para os objetos temporários que falharam. Os objetos temporários que foram enviados por upload antes da falha não serão enviados de novo quando você retomar o upload.

Objetos temporários serão nomeados da seguinte maneira:

RANDOM_ID/gsutil/tmp/parallel_composite_uploads/for_details_see/gsutil_help_cp/HASH

Quando RANDOM_ID for um valor numérico e HASH for uma hash MD5 (não relacionado à hash do conteúdo do arquivo ou objeto).

Geralmente, os objetos temporários são excluídos no final de um upload composto paralelo. No entanto, para evitar que os objetos temporários sejam mantidos, você precisa verificar o status de saída do comando da gsutil e excluir manualmente qualquer objeto temporário que foi enviado como parte de qualquer upload cancelado.

Suporte a JSON e XML

Tanto a API JSON quanto a API XML são compatíveis com o upload de blocos de objetos em paralelo e recombinando-as em um único objeto usando a operação compose.

Informações importantes ao projetar o código para uploads compostos paralelos:

  • Ao usar a operação compose, os objetos de origem não são afetados pelo processo de composição.

    Isso significa que, se elas forem temporárias, você precisará excluí-las logo depois de concluir a composição ou então os objetos de origem permanecerão no bucket e serão cobrados de acordo.

  • Para proteger contra alterações em objetos de origem entre as solicitações de upload e de composição, os usuários precisam fornecer um número de geração esperado para cada origem.

Downloads

É possível enviar solicitações de download para o Cloud Storage das seguintes maneiras:

  • Download simples: download de objetos em um destino.

  • Download de streaming: download de dados em um processo.

  • Download de objetos divididos: download de objetos grandes.

  • Downloads autenticados por navegador: download do navegador usando uma Conta do Google.

Compatibilidade de upload e download por ferramenta

Clique nas guias abaixo para ver as operações compatíveis com cada ferramenta:

Endpoints de solicitação

Caso você use APIs REST para fazer upload e download, consulte Endpoints de solicitação para ver uma discussão completa sobre os endpoints de solicitação que podem ser usados.

A seguir