Nomeando e referenciando contêineres, blobs e metadados

Este tópico descreve como nomear e fazer 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 recurso

O URI para fazer referência a um contêiner ou um blob deve ser exclusivo. Como cada nome de conta é exclusivo, duas contas podem ter contêineres com o mesmo nome. No entanto, em uma determinada conta de armazenamento, cada contêiner deve ter um nome exclusivo. Cada blob em um determinado contêiner também deve ter um nome exclusivo dentro do contêiner em questão.

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 contêiner e blob são transmitidos ao serviço Blob em um URL. Determinados caracteres devem ser codificados por porcentagem para aparecerem 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á determinados caracteres que não são válidos em caminhos 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.

Os pontos de código, como \uE000, quando válidos em nomes de arquivo NTFS, não são caracteres Unicode válidos, de modo que não podem ser usados. Além disso, não há permissão também para alguns caracteres ASCII ou Unicode, como caracteres de controle (0x00 a 0x1F, \u0081, etc.).

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êiner

Um nome de contêiner deve ser um nome DNS válido e estar em conformidade com as seguintes regras de nomenclatura:

  • Os nomes de contêiner devem iniciar ou terminar com uma letra ou número e podem conter apenas letras, números e o caractere hífen/subtração (-).

  • Cada caractere hifen/menos (-) deve ser imediatamente precedido e seguido por uma letra ou número; Hífens consecutivos não são permitidos em nomes de contêiner.

  • Todas as letras do nome de um contêiner devem ser minúsculas.

  • Os nomes de contêiner devem ter de 3 a 63 caracteres.

Nomes de diretório

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 reservados de URL precisam ser escapados corretamente.

Observação

Evite nomes de diretório que terminam com um ponto (.), uma barra (/), uma barra invertida (\) ou uma sequência ou combinação dos dois. Nenhum segmento de linha deve terminar com um ponto (.).

Captura de tela da barra invertida não permitida.

Nomes de blob

Um nome de blob deve estar em conformidade com as regras de nomenclatura a seguir. Essas regras também se aplicam a blobs em contas que têm um namespace hierárquico, a menos que indicado de outra forma.

  • Um nome de blob deve conter qualquer combinação de caracteres.

  • Um nome de blob deve ter pelo menos um caractere e não 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 reservados de URL precisam 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 /de avanço ) que corresponde ao diretório ou diretório virtual. As seguintes limitações de segmento de caminho se aplicam aos nomes de blob:

    • Se a 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 terminam com um ponto (.), uma barra (/), uma barra invertida (\) ou uma sequência ou combinação dos dois. Nenhum segmento de linha deve terminar com um ponto (.).

Captura de tela da barra de encaminhamento não permitida.

Por padrão, o serviço Blob é baseado em um esquema de armazenamento simples, não em um esquema hierárquico. No entanto, você pode especificar um delimitador de caractere ou cadeia de caracteres em 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:

  • /a

  • /a.txt

  • /a/b

  • /a/b.txt

Você pode se beneficiar do caractere delimitador ao enumerar blobs.

Nomes de metadados

Os metadados de um contêiner ou recurso de blob são armazenados como pares de nome/valor associados ao recurso. Os nomes de metadados devem seguir as regras de nomenclatura para identificadores C#.

Observe que os nomes de metadados preservam a forma com a 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 de recurso

Cada recurso tem um URI 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 referenciado explicitamente por seu nome ($root). Consulte Trabalhando com o contêiner raiz para obter mais informações. Os URIs a seguir fazem referência 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 ele 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 do blob base, mais o valor de data e 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 como se segue:

https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>

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 MCBS, 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+EFFFF
U+FFFFE
U+FFFFF

Confira também