O Cloud Storage é compatível com transferências por streaming, que permitem transmitir dados de e para sua conta do Cloud Storage sem que os dados precisem ser salvos em um arquivo. A transmissão é útil quando:
Você quer fazer o upload de dados, mas não sabe o tamanho final no início do upload, como ao gerar os dados de upload de um processo ou ao compactar um objeto rapidamente.
Você quer fazer o download dos dados do Cloud Storage para um processo.
Como usar a validação da soma de verificação durante o streaming
Como uma soma de verificação só pode ser fornecida na solicitação inicial de um upload, geralmente não é viável utilizar a validação da soma de verificação do Cloud Storage durante o streaming. Recomenda-se que você sempre use a validação da soma de verificação e faça isso manualmente após a conclusão do upload por streaming. No entanto, validar após a conclusão da transferência significa que todos os dados corrompidos podem ser acessados durante o tempo necessário para confirmar e remover os dados corrompidos.
Se você precisar de uma validação de soma de verificação antes da conclusão do upload e de os dados se tornarem acessíveis, não use um upload por streaming. Use uma opção de upload diferente que realize a validação da soma de verificação antes de finalizar o objeto.
Da mesma forma, não use um download de streaming se precisar validar a soma de verificação
antes da conclusão do download e dos dados se tornarem acessíveis.
Isso ocorre porque os downloads por streaming usam o cabeçalho Range
, e
o Cloud Storage não realiza a validação da soma de verificação nessas solicitações.
Pré-requisitos
Os pré-requisitos podem variar com base na ferramenta usada:
Console
Para concluir este guia usando o Console do Google Cloud, é preciso ter as permissões de IAM adequadas. Se o bucket que você quer acessar para streaming existir em um projeto que você não criou, talvez seja necessário que o proprietário do projeto conceda um papel que contenha as permissões necessárias.
Para uma lista de permissões necessárias para ações específicas, consulte Permissões do IAM para o Console do Google Cloud.
Para ver a lista de papéis relevantes, consulte Papéis do Cloud Storage. Como alternativa, é possível criar um papel personalizado que tenha permissões mais limitadas.
Linha de comando
Para concluir este guia usando um utilitário de linha de comando, você precisa ter as permissões de IAM adequadas. Se o bucket que você quer acessar para streaming existir em um projeto que você não criou, talvez seja necessário que o proprietário do projeto conceda um papel que contenha as permissões necessárias.
Para uma lista de permissões necessárias para ações específicas, consulte Permissões do IAM para comandos gsutil.
Para ver a lista de papéis relevantes, consulte Papéis do Cloud Storage. Como alternativa, é possível criar um papel personalizado que tenha permissões mais limitadas.
Amostras de código
Para concluir este guia usando as bibliotecas de cliente do Cloud Storage, é preciso ter as permissões de IAM adequadas. Se o bucket que você quer acessar para streaming existir em um projeto que você não criou, talvez seja necessário que o proprietário do projeto conceda um papel que contenha as permissões necessárias. Salvo indicação em contrário, as solicitações de biblioteca de cliente são feitas por meio da API JSON.
Para uma lista de permissões necessárias para ações específicas, consulte Permissões do IAM para métodos JSON.
Para ver a lista de papéis relevantes, consulte Papéis do Cloud Storage. Como alternativa, é possível criar um papel personalizado que tenha permissões mais limitadas.
APIs REST
API JSON
Para concluir este guia usando a API JSON, é preciso ter as permissões do IAM adequadas. Se o bucket que você quer acessar para streaming existir em um projeto que você não criou, talvez seja necessário que o proprietário do projeto conceda um papel que contenha as permissões necessárias.
Para uma lista de permissões necessárias para ações específicas, consulte Permissões do IAM para métodos JSON.
Para ver a lista de papéis relevantes, consulte Papéis do Cloud Storage. Como alternativa, é possível criar um papel personalizado que tenha permissões mais limitadas.
Fazer streaming de um upload
Os exemplos a seguir mostram como executar um upload por streaming de um processo para um objeto do Cloud Storage:
Console
O console do Google Cloud não é compatível com uploads por streaming. Em vez disso, use a CLI gcloud.
Linha de comando
gcloud
Envie os dados ao comando
gcloud storage cp
e use um traço para indicar o URL de origem:PROCESS_NAME | gcloud storage cp - gs://BUCKET_NAME/OBJECT_NAME
Em que:
PROCESS_NAME
é o nome do processo do qual você está coletando dados. Por exemplo,collect_measurements
.BUCKET_NAME
é o nome do bucket que contém o objeto. Por exemplo,my_app_bucket
.OBJECT_NAME
é o nome do objeto criado a partir dos dados. Por exemplo,data_measurements
.
gsutil
Envie os dados ao comando
gsutil cp
e use um traço para indicar o URL de origem:PROCESS_NAME | gsutil cp - gs://BUCKET_NAME/OBJECT_NAME
Em que:
PROCESS_NAME
é o nome do processo do qual você está coletando dados. Por exemplo,collect_measurements
.BUCKET_NAME
é o nome do bucket que contém o objeto. Por exemplo,my_app_bucket
.OBJECT_NAME
é o nome do objeto criado a partir dos dados. Por exemplo,data_measurements
.
Amostras de código
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage C++.
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage C#.
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage Go.
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage Java.
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage Node.js.
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage PHP.
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage Python.
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby.
APIs REST
API JSON
Para executar um upload por streaming, siga as instruções sobre como executar um upload retomável com as seguintes considerações:
Ao fazer upload dos próprios dados de arquivo, use um upload de vários blocos.
Como você não sabe o tamanho total do arquivo até chegar ao bloco final, use um
*
para o tamanho total do arquivo no cabeçalhoContent-Range
de blocos intermediários.Por exemplo, se o primeiro bloco do upload tiver um tamanho de 512 KiB, o cabeçalho
Content-Range
do bloco serábytes 0-524287/*
. Se o upload tiver 64.000 bytes restantes após o primeiro bloco, envie um bloco final que contenha os bytes restantes e tenha um cabeçalhoContent-Range
com o valorbytes 524288-588287/588288
.
API XML
Para realizar um upload por streaming, use um destes métodos:
Um upload retomável, com os seguintes ajustes:
Ao fazer upload dos próprios dados de arquivo, use um upload de vários blocos.
Como você não sabe o tamanho total do arquivo até chegar ao bloco final, use um
*
para o tamanho total do arquivo no cabeçalhoContent-Range
de blocos intermediários.Por exemplo, se o primeiro bloco do upload tiver um tamanho de 512 Kib, o cabeçalho
Content-Range
do bloco serábytes 0-524287/*
. Se o upload tiver 64.000 bytes restantes após o primeiro bloco, envie um bloco final que contenha os bytes restantes e tenha um cabeçalhoContent-Range
com o valorbytes 524288-588287/588288
.
Fazer streaming de um download
Os exemplos a seguir mostram como realizar o download de um objeto do Cloud Storage para um processo:
Console
O console do Google Cloud não é compatível com downloads por streaming. Em vez disso, use a CLI gcloud.
Linha de comando
gcloud
Execute o comando
gcloud storage cp
usando um traço para o URL de destino. Em seguida, direcione os dados para o processo:gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
Em que:
BUCKET_NAME
é o nome do bucket que contém o objeto. Por exemplo,my_app_bucket
.OBJECT_NAME
é o nome do objeto que você está transmitindo para o processo. Por exemplo,data_measurements
.PROCESS_NAME
é o nome do processo no qual você está inserindo dados. Por exemplo,analyze_data
.
Também é possível realizar a transferência por streaming dos dados de um objeto do Cloud Storage para um comando padrão do Linux, como sort:
gcloud storage cp gs://my_app_bucket/data_measurements - | sort
gsutil
Execute o comando
gsutil cp
usando um traço para o URL de destino. Em seguida, direcione os dados para o processo:gsutil cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
Em que:
BUCKET_NAME
é o nome do bucket que contém o objeto. Por exemplo,my_app_bucket
.OBJECT_NAME
é o nome do objeto que você está transmitindo para o processo. Por exemplo,data_measurements
.PROCESS_NAME
é o nome do processo no qual você está inserindo dados. Por exemplo,analyze_data
.
Também é possível realizar a transferência por streaming dos dados de um objeto do Cloud Storage para um comando padrão do Linux, como sort:
gsutil cp gs://my_app_bucket/data_measurements - | sort
Amostras de código
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage C++.
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage C#.
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage Go.
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage Java.
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage Node.js.
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage PHP.
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage Python.
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby.
APIs REST
API JSON
Para executar um download por streaming, siga as instruções para fazer o download de um objeto com as seguintes considerações:
Antes de começar o download, recupere os metadados do objeto e salve o número de geração. Inclua esse número de geração em todas as suas solicitações para garantir que você não faça o download de dados de duas gerações diferentes no caso de a original ser substituída.
Use o cabeçalho
Range
na solicitação para recuperar uma parte do objeto geral, que pode ser enviada ao processo local desejado.Continue fazendo solicitações para partes sucessivas do objeto até que todo o objeto seja recuperado.
API XML
Para executar um download por streaming, siga as instruções para fazer o download de um objeto com as seguintes considerações:
Antes de começar o download, recupere os metadados do objeto e salve o número de geração. Inclua esse número de geração em todas as suas solicitações para garantir que você não faça o download de dados de duas gerações diferentes no caso de a original ser substituída.
Use o cabeçalho
Range
na solicitação para recuperar uma parte do objeto geral, que pode ser enviada ao processo local desejado.Continue fazendo solicitações para partes sucessivas do objeto até que todo o objeto seja recuperado.
A seguir
- Saiba mais sobre a transcodificação descompressiva.
- Saiba mais sobre Uploads e downloads.