Nomeando e referenciando contêineres, blobs e metadados
Este tópico descreve nomenclatura e referência a contêineres, blobs, metadados e instantâneos. Uma conta de armazenamento pode conter zero ou mais contêineres. Um contêiner contém propriedades, metadados e zero ou mais blobs. Se sua conta tiver um namespace hierárquico, um contêiner também poderá conter zero ou mais diretórios e esses diretórios poderão conter zero ou mais blobs. Um blob é qualquer entidade única composta de dados binários, propriedades e metadados.
Nomes de recursos
O URI para fazer referência a um contêiner ou blob deve ser exclusivo. Como cada nome de conta é exclusivo, duas contas podem ter contêineres com o mesmo nome. No entanto, dentro de uma determinada conta de armazenamento, cada contêiner deve ter um nome exclusivo. Cada blob dentro de um determinado contêiner também deve ter um nome exclusivo dentro desse contêiner.
Se você tentar criar um contêiner ou blob com um nome que viole as regras de nomenclatura, a solicitação falhará com o código de status 400 (Solicitação incorreta).
Os nomes de Blob e contêiner são passados para o serviço de Blob dentro de uma URL. Certos caracteres devem ser codificados em porcentagem para aparecer em uma URL, usando UTF-8 (preferencial) ou MBCS. Essa codificação ocorre automaticamente quando você usa as bibliotecas de cliente do Armazenamento do Azure. No entanto, há certos caracteres que não são válidos em caminhos de URL, mesmo quando codificados. Se esses caracteres aparecerem em nomes de blob ou contêiner, a solicitação poderá falhar. Para obter uma lista desses caracteres, consulte caracteres Unicode não recomendados para uso em nomes de contêiner ou blob.
Pontos de código como \uE000, embora válidos em nomes de arquivos NTFS, não são caracteres Unicode válidos, portanto, não podem ser usados. Além disso, alguns caracteres ASCII ou Unicode, como caracteres de controle (0x00 para 0x1F, \u0081, etc.), também não são permitidos.
Para obter regras adicionais que regem cadeias de caracteres Unicode em HTTP/1.1, consulte RFC 2616, Seção 2.2: Regras básicas e RFC 3987.
Nomes de contêineres
Um nome de contêiner deve ser um nome DNS válido, em conformidade com as seguintes regras de nomenclatura:
Os nomes de contêiner devem começar ou terminar com uma letra ou número e podem conter apenas letras, números e o caractere hífen/menos (-).
Cada hífen/menos (-) caractere deve ser imediatamente precedido e seguido de uma letra ou número; hífenes consecutivas não são permitidas em nomes de contêineres.
Todas as letras no nome de um contêiner devem ser minúsculas.
Os nomes dos contêineres devem ter de 3 a 63 caracteres.
Nomes de diretórios
Se sua conta tiver um namespace hierárquico, um nome de diretório deverá estar em conformidade com as seguintes regras de nomenclatura:
Um nome de diretório pode conter qualquer combinação de caracteres.
Um nome de diretório deve ter pelo menos um caractere e não pode ter mais de 1.024 caracteres.
Os nomes de diretório diferenciam maiúsculas de minúsculas.
Os caracteres de URL reservados devem ser escapados corretamente.
Observação
Evite nomes de diretórios que terminem com um ponto (.), uma barra (/), uma barra invertida (\) ou uma sequência ou combinação dos dois. Nenhum segmento de caminho deve terminar com um ponto (.).
Nomes de Blob
Um nome de blob deve estar em conformidade com as seguintes regras de nomenclatura. Essas regras também se aplicam a blobs em contas que têm um namespace hierárquico, salvo indicação em contrário.
Um nome de blob pode conter qualquer combinação de caracteres.
Um nome de blob deve ter pelo menos um caractere e não pode ter mais de 1.024 caracteres, para blobs no Armazenamento do Azure.
O emulador de Armazenamento do Azure dá suporte a nomes de blob de até 256 caracteres. Para obter mais informações, consulte Usar o emulador de armazenamento do Azure para desenvolvimento e teste.
Os nomes de blob diferenciam maiúsculas de minúsculas.
Os caracteres de URL reservados devem ser escapados corretamente.
Há limitações no número de segmentos de caminho que compõem um nome de blob. Um segmento de caminho é a cadeia de caracteres entre caracteres delimitadores consecutivos (por exemplo, uma barra
/
) que corresponde ao diretório ou diretório virtual. As seguintes limitações de segmento de caminho se aplicam a nomes de blob:- Se o da conta de armazenamento não tiver o namespace hierárquico habilitado, o número de segmentos de caminho que compõem o nome do blob não poderá exceder 254.
- Se a conta de armazenamento tiver o namespace hierárquico habilitado, o número de segmentos de caminho que compõem o nome do blob não poderá exceder 63 (incluindo segmentos de caminho para nome da conta e nome do contêiner).
Observação
Evite nomes de blob que terminem com um ponto (.), uma barra (/), uma barra invertida (\) ou uma sequência ou combinação dos dois. Nenhum segmento de caminho deve terminar com um ponto (.).
Por padrão, o serviço de Blob é baseado em um esquema de armazenamento simples, não em um esquema hierárquico. No entanto, você pode especificar um delimitador de caracteres ou cadeia de caracteres dentro de um nome de blob para criar uma hierarquia virtual. Por exemplo, a lista a seguir mostra nomes de blob válidos e exclusivos. Observe que uma cadeia de caracteres pode ser válida como um nome de blob e como um nome de diretório virtual no mesmo contêiner:
/um
/a.txt
/a/b
/a/b.txt
Você pode aproveitar o caractere delimitador ao enumerar blobs.
Nomes de chave e valor de metadados
Os metadados de um contêiner ou recurso de blob são armazenados como pares nome-valor associados ao recurso. Os nomes das chaves de metadados devem aderir às seguintes regras de nomenclatura:
Deve começar com uma letra ou sublinhado
Quaisquer caracteres a seguir podem ser letras, números ou sublinhados
O nome da chave de metadados deve ser ASCII válido
Os nomes de valores de metadados também devem ser ASCII válidos. Observe que os nomes de metadados preservam o caso com o qual foram criados, mas não diferenciam maiúsculas de minúsculas quando definidos ou lidos. Se dois ou mais cabeçalhos de metadados com o mesmo nome forem enviados para um recurso, o serviço Blob retornará o código de status 400 (Solicitação incorreta).
Sintaxe do URI do recurso
Cada recurso tem um URI de base correspondente, que se refere ao próprio recurso.
Para a conta de armazenamento, o URI base inclui apenas o nome da conta:
https://myaccount.blob.core.windows.net
Para um contêiner, o URI base inclui o nome da conta e o nome do contêiner:
https://myaccount.blob.core.windows.net/mycontainer
Para um blob, o URI base inclui o nome da conta, o nome do contêiner e o nome do blob:
https://myaccount.blob.core.windows.net/mycontainer/myblob
Uma conta de armazenamento pode ter um contêiner raiz, um contêiner padrão que pode ser omitido do URI. Um blob no contêiner raiz pode ser referenciado sem nomear o contêiner, ou o contêiner raiz pode ser explicitamente referenciado por seu nome ($root
). Consulte Trabalhando com o de contêiner raiz para obter mais informações. Os URIs a seguir referem-se a um blob no contêiner raiz:
https://myaccount.blob.core.windows.net/myblob
https://myaccount.blob.core.windows.net/$root/myblob
Instantâneos de Blob
Um instantâneo é uma versão somente leitura de um blob armazenado como estava no momento em que o instantâneo foi criado. Você pode usar instantâneos para criar um backup ou ponto de verificação de um blob. Um nome de blob de instantâneo inclui o URI de blob base mais um valor de data-hora que indica quando o instantâneo foi criado.
Por exemplo, suponha que um blob tenha o seguinte URI:
https://myaccount.blob.core.windows.net/mycontainer/myblob
O URI para um instantâneo desse blob é formado da seguinte maneira:
https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
Caracteres Unicode não recomendados para uso em nomes de contêiner ou blob
A tabela a seguir fornece uma lista de caracteres Unicode que não são recomendados para uso em nomes de contêiner ou blob. Esses caracteres, quando usados em combinação com outros caracteres nesta lista, podem falhar na decodificação UTF-8 ou MBCS, levando à falha da solicitação para o serviço Blob.
Caractere Unicode |
---|
U+0080 |
U+0082 |
U+0083 |
U+0084 |
U+0085 |
U+0086 |
U+0087 |
U+0088 |
U+0089 |
U+008A |
U+008B |
U+008C |
U+008E |
U+0091 |
U+0092 |
U+0093 |
U+0094 |
U+0095 |
U+0096 |
U+0097 |
U+0098 |
U+0099 |
U+009A |
U+009B |
U+009C |
U+009E |
U+009F |
U+FDD1 |
U+FDD2 |
U+FDD3 |
U+FDD4 |
U+FDD5 |
U+FDD6 |
U+FDD7 |
U+FDD8 |
U+FDD9 |
U+FDDA |
U+FDDB |
U+FDDC |
U+FDDE |
U+FDDF |
U+FDE0 |
U+FDE1 |
U+FDE2 |
U+FDE3 |
U+FDE4 |
U+FDE5 |
U+FDE6 |
U+FDE7 |
U+FDE8 |
U+FDE9 |
U+FDEA |
U+FDEB |
U+FDEC |
U+FDED |
U+FDEE |
U+FDEF |
U+FFF0 |
U+FFF1 |
U+FFF2 |
U+FFF3 |
U+FFF4 |
U+FFF5 |
U+FFF6 |
U+FFF7 |
U+FFF8 |
U+FFF9 |
U+FFFA |
U+FFFB |
U+FFFC |
U+FFFD |
U+FFFE |
U+FFFF |
U+1FFFE |
U+1FFFF |
U+2FFFE |
U+2FFFF |
U+3FFFE |
U+3FFFF |
U+5FFFE |
U+5FFFF |
U+6FFFE |
U+6FFFF |
U+7FFFE |
U+7FFFF |
U+9FFFE |
U+9FFFF |
U+AFFFE |
U+AFFFF |
U+BFFFE |
U+BFFFF |
U+DFFFE |
U+DFFFF |
U+EFFFE |
U+FEFF |
U+FFFFE |
U+FFFFF |