Esta página descreve os objetos, um recurso no Cloud Storage. Para uma vista geral de como funciona o Cloud Storage, consulte a vista geral do produto Cloud Storage.
Objetos
Os objetos são os elementos individuais de dados que armazena no Cloud Storage. Não existe limite para o número de objetos que pode criar num contentor.
Os objetos têm dois componentes: dados de objetos e metadados de objetos. Os dados de objetos são normalmente um ficheiro que quer armazenar no Cloud Storage e são completamente opacos para o Cloud Storage. Os metadados de objetos são uma coleção de pares de nome-valor que descrevem várias qualidades de objetos.
Dois elementos importantes dos metadados de objetos comuns a todos os objetos são o nome do objeto e o respetivo número de geração. Quando adiciona um objeto a um contentor do Cloud Storage, especifica o nome do objeto e o Cloud Storage atribui o número de geração. Em conjunto, o nome e a geração identificam de forma exclusiva o objeto nesse contentor.
Pode usar listas de controlo de acesso (ACLs) para controlar o acesso a objetos individuais. Também pode usar a gestão de identidade e de acesso (IAM) para controlar o acesso a todos os objetos num contentor ou numa pasta gerida.
Considerações sobre a nomenclatura
Ao atribuir nomes a objetos no Cloud Storage, é essencial cumprir requisitos específicos para garantir a compatibilidade e evitar erros. Estes requisitos aplicam-se a contentores de espaço de nomes simples e a contentores com o espaço de nomes hierárquico ativado.
Requisitos gerais
- Os nomes de objetos podem conter qualquer sequência de carateres Unicode válidos.
- Os nomes dos objetos não podem conter carateres de retorno ou de alimentação de linha.
- Tenha em atenção que as barras invertidas enviadas através de interfaces, como a CLI gcloud e a Google Cloud consola, são ignoradas nos bastidores. Por exemplo,
\n
torna-se\\n
. A restrição de retorno de carro e alimentação de linha refere-se estritamente a carateres de escape ANSI.
- Tenha em atenção que as barras invertidas enviadas através de interfaces, como a CLI gcloud e a Google Cloud consola, são ignoradas nos bastidores. Por exemplo,
- Os nomes de objetos não podem começar por
.well-known/acme-challenge/
. - Os objetos não podem ter o nome
.
nem..
.
Limites de tamanho de objetos específicos do espaço de nomes
O tamanho máximo de um nome de objeto varia consoante o espaço de nomes do contentor:
- Tamanho do nome do objeto num contentor de espaço de nomes simples: 1 a 1024 bytes quando codificado em UTF-8.
Tamanho do nome do objeto em contentores ativados com o espaço de nomes hierárquico: os nomes dos objetos podem ser divididos em duas partes:
- Nome da pasta: o nome da pasta na qual o objeto reside. O tamanho máximo do nome da pasta é de 512 bytes quando codificado em UTF-8.
- Nome base: o nome do objeto que reside na pasta. O tamanho máximo do nome base é de 512 bytes quando codificado em UTF-8.
Por exemplo, o caminho
my-folder/my-object.txt
representa um objeto com um nome basemy-object.txt
armazenado numa pasta denominadamy-folder/
.
Recomendações
Recomendamos vivamente que evite o seguinte nos nomes dos objetos:
- Carateres de controlo que são ilegais em XML 1.0 (#x7F–#x84 e #x86–#x9F): estes carateres causam problemas de listagem XML quando tenta listar os seus objetos.
- O caráter
#
: os comandos da Google Cloud CLI interpretam os nomes de objetos que terminam com #<string numérica> como identificadores de versão. Por isso, a inclusão de#
nos nomes de objetos pode dificultar ou impossibilitar a realização de operações nesses objetos com versões através da gcloud CLI. - Os carateres
[
,]
,*
ou?
: os comandos da CLI do Google Cloud interpretam estes carateres como carateres universais, pelo que a inclusão dos mesmos nos nomes dos objetos pode dificultar ou impossibilitar a realização de operações com carateres universais. Além disso,*
e?
não são carateres válidos para nomes de ficheiros no Windows. - Os carateres
:
,"
,<
,>
ou|
: estes não são carateres válidos para nomes de ficheiros no Windows. Por isso, as tentativas de transferir um objeto que use esses carateres no respetivo nome para um ficheiro do Windows falham, a menos que o método de transferência inclua a mudança do nome do ficheiro do Windows resultante. O caráter/
, embora também não seja um caráter válido para nomes de ficheiros no Windows, é normalmente aceitável para utilização em nomes de objetos para imitar uma estrutura de diretórios. As ferramentas, como a CLI Google Cloud, convertem automaticamente o caráter em\
quando fazem a transferência para um ambiente Windows. - Informações confidenciais ou de identificação pessoal (IIP): os nomes dos objetos são mais visíveis do que os dados dos objetos. Por exemplo, os nomes dos objetos aparecem nos URLs do objeto e quando lista objetos num contentor.
Não é possível mudar diretamente o nome dos objetos existentes, mas pode mudar indiretamente o nome de um objeto copiando e eliminando o objeto original.
Espaço de nomes do objeto
Pode armazenar objetos nos seguintes espaços de nomes:
Espaço de nomes simples
Os contentores configurados para armazenar objetos num espaço de nomes simples criam sempre objetos diretamente no contentor. Em contentores de espaço de nomes simples, não existe hierarquia no contentor, nem existem diretórios ou pastas nos quais os objetos existam.
Para sua conveniência, existem várias formas de tratar os objetos em contentores de espaço de nomes simples como se estivessem armazenados numa hierarquia de pastas:
As pastas geridas são um recurso do Cloud Storage que oferece acesso expandido a grupos de objetos com um prefixo de nome partilhado.
Ferramentas como o Google Cloud console e a CLI do Google Cloud interpretam o caráter de barra (
/
) no nome de um objeto como um delimitador, de modo a simular pastas em contentores que usam um espaço de nomes simples para objetos.
Por exemplo, se criar um objeto com o nome folder1/file.txt
no contentor your-bucket
, o caminho para o objeto é your-bucket/folder1/file.txt
e o Cloud Storage não tem nenhuma pasta com o nome folder1
armazenada no mesmo. Do ponto de vista do Cloud Storage, a string folder1/
faz parte do nome do objeto.
No entanto, como o objeto tem um /
no nome, algumas ferramentas implementam a apresentação de pastas. Por exemplo, quando usa a Google Cloud consola, navega para o objeto folder1/file1.txt
como se fosse um objeto com o nome file1.txt
numa pasta com o nome folder1
. Da mesma forma, pode criar uma pasta gerida denominada folder1
e, em seguida, file1.txt
ficaria sujeita à política de acesso definida por esta pasta gerida.
Tenha em atenção que, uma vez que os objetos residem num espaço de nomes simples, as estruturas profundamente aninhadas semelhantes a diretórios não têm o desempenho que um sistema de ficheiros nativo tem quando lista subdiretórios profundamente aninhados.
Consulte as práticas recomendadas da taxa de pedidos para ver recomendações sobre como otimizar o desempenho evitando nomes sequenciais durante carregamentos em grande escala. É provável que os objetos carregados com nomes sequenciais alcancem o mesmo servidor de back-end e restrinjam o desempenho.
Pastas simuladas
Para ajudar a organizar objetos nos seus contentores do Cloud Storage, algumas ferramentas simulam pastas, e as APIs JSON e XML têm capacidades que lhe permitem criar o seu próprio esquema de nomenclatura para simular pastas. Clique nos seguintes separadores para ver como diferentes ferramentas processam pastas simuladas.
Consola
A Google Cloud consola cria uma representação visual de pastas que se assemelha a um explorador de ficheiros local.
Na Google Cloud consola, pode criar uma pasta vazia num contentor ou carregar uma pasta existente.
Quando carrega uma pasta existente, o nome da pasta passa a fazer parte do caminho de todos os objetos contidos na pasta. Todas as subpastas e os objetos que contêm também são incluídos no carregamento.
Para criar uma pasta:
- Na Google Cloud consola, aceda à página Recipientes do Cloud Storage.
Navegue para o contentor.
Clique em Criar pasta para criar uma nova pasta vazia ou em Carregar pasta para carregar uma pasta existente.
Linha de comandos
As CLIs do Cloud Storage simulam a experiência típica de diretório de linha de comandos através de várias regras.
Para conseguir a ilusão de uma árvore de ficheiros hierárquica, a CLI gcloud aplica as seguintes regras para determinar se o URL de destino num comando deve ser tratado como um nome de objeto ou uma pasta:
Se o URL de destino terminar com um caráter
/
, os comandos da CLI gcloud tratam o URL de destino como uma pasta. Por exemplo, considere o seguinte comando, em queyour-file
é o nome de um ficheiro:gcloud storage cp your-file gs://your-bucket/abc/
Como resultado deste comando, o Cloud Storage cria um objeto com o nome
abc/your-file
no contentoryour-bucket
.Se copiar vários ficheiros de origem para um URL de destino, quer através da flag
--recursive
, quer de um caractere universal, como**
, a CLI gcloud trata o URL de destino como uma pasta. Por exemplo, considere o seguinte comando em quetop-dir
é uma pasta que contém ficheiros comofile1
efile2
:gcloud storage cp top-dir gs://your-bucket/abc --recursive
Como resultado deste comando, o Cloud Storage cria os objetos
abc/top-dir/file1
eabc/top-dir/file2
no contentoryour-bucket
.Se nenhuma destas regras se aplicar, a CLI gcloud verifica os objetos no contentor para determinar se o URL de destino é um nome de objeto ou uma pasta. Por exemplo, considere o seguinte comando em que
your-file
é o nome de um ficheiro:gcloud storage cp your-file gs://your-bucket/abc
A CLI gcloud faz um pedido de listagem de objetos para
your-bucket
, usando o delimitador/
e o prefix=abc
, para determinar se existem objetos emyour-bucket
cujo caminho começa comabc/
. Se for esse o caso, a CLI gcloud trataabc/
como um nome de pasta e o comando cria o objetoabc/your-file
no contentoryour-bucket
. Caso contrário, a CLI gcloud cria o objetoabc
emyour-bucket
.
Esta abordagem baseada em regras difere da forma como muitas ferramentas funcionam, que criam objetos de 0 bytes para marcar a existência de pastas. A CLI gcloud compreende várias convenções usadas por essas ferramentas, como a convenção de adicionar _$folder$
ao final do nome do objeto de 0 bytes, mas não requer esses objetos marcadores para implementar um comportamento de nomenclatura consistente com os comandos UNIX.
Além destas regras, a forma como a CLI gcloud trata os ficheiros de origem depende de usar ou não a flag --recursive
. Se usar a flag, a CLI gcloud cria nomes de objetos para espelhar a estrutura do diretório de origem, começando no ponto de processamento recursivo. Por exemplo, considere o seguinte comando em que home/top-dir
é uma pasta que contém ficheiros como file1
e sub-dir/file2
:
gcloud storage cp home/top-dir gs://your-bucket --recursive
Como resultado deste comando, o Cloud Storage cria os objetos top-dir/file1
e top-dir/sub-dir/file2
no contentor your-bucket
.
Por outro lado, a cópia sem a flag --recursive
, mesmo que sejam copiados vários ficheiros devido à presença de um caráter universal, como **
, resulta em objetos com o nome do componente do caminho final dos ficheiros de origem. Por exemplo, se home/top-dir
for uma pasta que contém ficheiros como file1
e sub-dir/file2
, o comando:
gcloud storage cp home/top-dir/** gs://your-bucket
cria um objeto denominado file1
e um objeto denominado file2
no contentor your-bucket
.
Voltas a tentar e atribuição de nomes
Quando a CLI gcloud volta a tentar um pedido interrompido, pode encontrar um problema em que a primeira tentativa copia um subconjunto de ficheiros e as tentativas subsequentes encontram uma pasta de destino já existente, o que faz com que os seus objetos sejam denominados incorretamente.
Por exemplo, considere o seguinte comando, em que existem subpastas em your-dir/
, como dir1
e dir2
, e ambas as subpastas contêm o ficheiro abc
:
gcloud storage cp ./your-dir gs://your-bucket/new --recursive
Se o caminho gs://your-bucket/new
ainda não existir, a CLI gcloud cria os seguintes objetos na primeira tentativa bem-sucedida:
new/dir1/abc new/dir2/abc
No entanto, na próxima tentativa bem-sucedida do mesmo comando, a CLI gcloud cria os seguintes objetos:
new/your-dir/dir1/abc new/your-dir/dir2/abc
Para que a CLI gcloud funcione de forma consistente em todas as tentativas, experimente o seguinte:
Adicione uma barra ao final do URL de destino para que a CLI gcloud o trate sempre como uma pasta.
Use
gcloud storage rsync
. Uma vez que orsync
não usa as regras de nomenclatura de pastas definidas pelo cp do Unix, funciona de forma consistente, quer a subpasta de destino exista ou não.
Notas adicionais
Não pode criar um objeto de zero bytes para imitar uma pasta vazia através da CLI gcloud.
Quando transfere para um sistema de ficheiros local, a CLI gcloud ignora os objetos cujo nome termina com um caráter
/
, porque não é permitido criar um ficheiro que termine com um/
no Linux e macOS.Se usar scripts para criar caminhos de ficheiros combinando subcaminhos, tenha em atenção que, uma vez que
/
é apenas um caráter que se encontra no nome do objeto, as CLIs interpretamgs://your-bucket/folder/
como um objeto diferente degs://your-bucket/folder
.
APIs REST
API JSON
As pastas não existem na API JSON. Pode restringir os objetos que lista e simular pastas através dos parâmetros de consulta prefix
e delimiter
.
Por exemplo, para listar todos os objetos no contentor my-bucket
com o prefixo folder/subfolder/
, faça um pedido de listagem de objetos através do seguinte URL:
"https://storage.googleapis.com/storage/v1/b/my-bucket/o?prefix=folder/subfolder/"
API XML
As pastas não existem na API XML. Pode restringir os objetos que lista e simular pastas usando os parâmetros de consulta prefix
e delimiter
.
Por exemplo, para listar todos os objetos no contentor my-bucket
com o prefixo folder/subfolder/
, faça um pedido de listagem de objetos através do seguinte URL:
"https://storage.googleapis.com/my-bucket?prefix=folder/subfolder/"
Remover pastas simuladas
Uma vez que as pastas simuladas não existem realmente, normalmente, pode remover
pastas simuladas ao mudar o nome dos objetos para que a pasta simulada deixe de fazer
parte do nome do objeto. Por exemplo, se tiver um objeto com o nome folder1/file
, pode remover a pasta simulada folder1/
mudando o nome do objeto para apenas file
.
No entanto, se tiver usado uma ferramenta que cria objetos de zero bytes como marcadores de posição de pastas, como a consola, tem de eliminar o objeto de zero bytes para remover a pasta. Google Cloud
Espaço de nomes hierárquico
O espaço de nomes hierárquico permite-lhe organizar objetos num contentor do Cloud Storage numa hierarquia de pastas semelhante a um sistema de ficheiros. O espaço de nomes hierárquico melhora o desempenho e ajuda a gerir os seus dados de forma eficiente. Para saber mais sobre o espaço de nomes hierárquico e quando o usar, consulte Espaço de nomes hierárquico.
Imutabilidade de objetos
Os objetos são imutáveis, o que significa que um objeto carregado não pode ser alterado durante o respetivo tempo de vida de armazenamento. A duração do armazenamento de um objeto é o tempo entre a criação bem-sucedida do objeto, como o carregamento, e a eliminação bem-sucedida do objeto. Na prática, isto significa que não pode fazer alterações incrementais a objetos, como operações de anexação ou operações de truncagem. No entanto, é possível substituir objetos armazenados no Cloud Storage, e esta ação é atómica: até que o novo carregamento seja concluído, a versão antiga do objeto é publicada para os leitores e, após a conclusão do carregamento, a nova versão do objeto é publicada para os leitores. Uma única operação de substituição marca o fim da duração total de um objeto imutável e o início da duração total de um novo objeto imutável.
O número de geração de um objeto muda sempre que substitui os dados do objeto. Assim, o número de geração identifica exclusivamente um objeto imutável.
Tenha em atenção que existe um limite de uma vez por segundo para substituir rapidamente o mesmo objeto. A substituição do mesmo objeto com maior frequência pode resultar em erros 429 Too Many Requests
. Deve conceber a sua aplicação para carregar dados de um objeto específico não mais do que uma vez por segundo e processar erros 429 Too Many Requests
ocasionais através de uma estratégia de repetição de retirada exponencial.
O que se segue?
- Carregar e transferir objetos.
- Mova um objeto existente.
- Saiba mais sobre os recipientes, que são contentores para objetos.
- Saiba mais sobre as pastas geridas.