O Cloud Storage oferece suporte ao streaming de dados para um bucket, sem exigir que os dados primeiro sejam salvos em um arquivo. Isso é útil para quando você quiser 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.
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 usar 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 checksum 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.
Funções exigidas
Para ter as permissões necessárias para transmitir uploads, peça ao administrador para conceder a você um dos seguintes papéis:
Para uploads que incluem um bloqueio de retenção de objetos, peça ao administrador para conceder a você o papel de IAM de Administrador de objetos do Storage (
roles/storage.objectAdmin
) para o bucket.Para todos os outros casos, peça ao administrador para conceder a você o papel do IAM de Usuário do objeto do Storage (
roles/storage.objectUser
) para o bucket.
Esses papéis predefinidos contêm as permissões necessárias para transmitir uploads para o Cloud Storage. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
storage.objects.create
storage.objects.delete
- Essa permissão é necessária apenas para uploads que substituem um objeto já existente.
storage.objects.list
- Essa permissão é necessária apenas para usar a CLI do Google Cloud a fim de executar as instruções desta página.
storage.objects.setRetention
- Essa permissão é necessária apenas para uploads que incluem um bloqueio de retenção de objetos.
Também é possível conseguir essas permissões com outros papéis predefinidos ou personalizados.
Para informações sobre como conceder papéis nos buckets, consulte Usar o IAM com buckets.
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
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
.
Bibliotecas de cliente
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage C++.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage C#.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage Go.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage Java.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage Node.js.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage PHP.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
APIs REST
API JSON
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
.
Um upload de solicitação única, com os seguintes ajustes:
Inclua um cabeçalho
Transfer-Encoding: chunked
e exclua o cabeçalhoContent-Length
.Elabora a solicitação de acordo com a especificação, enviando os dados do objeto em partes conforme eles ficam disponíveis.
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
.
Um upload de solicitação única, com os seguintes ajustes:
Inclua um cabeçalho
Transfer-Encoding: chunked
e exclua o cabeçalhoContent-Length
.Elabora a solicitação de acordo com a especificação, enviando os dados do objeto em partes conforme eles ficam disponíveis.
Não é possível fazer um upload por streaming usando esse método se a solicitação usar uma assinatura no cabeçalho
Authorization
.
A seguir
- Fazer streaming de um download.
- Saiba mais sobre transcodificação de descompactação.
- Saiba mais sobre uploads e downloads.