Nazewnictwo i odwoływanie się do kontenerów, obiektów blob i metadanych

W tym temacie opisano nazewnictwo i odwołowanie się do kontenerów, obiektów blob, metadanych i migawek. Konto magazynu może zawierać zero lub więcej kontenerów. Kontener zawiera właściwości, metadane i zero lub więcej obiektów blob. Jeśli konto ma hierarchiczną przestrzeń nazw, kontener może również zawierać zero lub więcej katalogów, a te katalogi mogą zawierać zero lub więcej obiektów blob. Obiekt blob to dowolna pojedyncza jednostka składająca się z danych binarnych, właściwości i metadanych.

Nazwy zasobów

Identyfikator URI odwołujący się do kontenera lub obiektu blob musi być unikatowy. Ponieważ każda nazwa konta jest unikatowa, dwa konta mogą mieć kontenery o tej samej nazwie. Jednak na danym koncie magazynu każdy kontener musi mieć unikatową nazwę. Każdy obiekt blob w danym kontenerze musi również mieć unikatową nazwę w tym kontenerze.

Jeśli spróbujesz utworzyć kontener lub obiekt blob o nazwie naruszającej reguły nazewnictwa, żądanie zakończy się niepowodzeniem z kodem stanu 400 (nieprawidłowe żądanie).

Nazwy obiektów blob i kontenerów są przekazywane do usługi Blob Service w adresie URL. Niektóre znaki muszą być zakodowane procentowo, aby pojawiały się w adresie URL przy użyciu protokołu UTF-8 (preferowane) lub MBCS. To kodowanie odbywa się automatycznie podczas korzystania z bibliotek klienckich usługi Azure Storage. Istnieją jednak pewne znaki, które nie są prawidłowe w ścieżkach adresu URL, nawet w przypadku kodowania. Jeśli te znaki są wyświetlane w nazwach obiektów blob lub kontenerów, żądanie może zakończyć się niepowodzeniem. Aby uzyskać listę tych znaków, zobacz Znaki Unicode, które nie są zalecane do użycia w nazwach kontenerów lub obiektów blob.

Punkty kodu, takie jak \uE000, choć prawidłowe w nazwach plików NTFS, nie są prawidłowymi znakami Unicode, więc nie można ich używać. Ponadto niektóre znaki ASCII lub Unicode, takie jak znaki sterujące (0x00 do 0x1F, \u0081 itp.), również nie są dozwolone.

Aby uzyskać dodatkowe reguły dotyczące ciągów Unicode w protokole HTTP/1.1, zobacz RFC 2616, Sekcja 2.2: Podstawowe reguły i RFC 3987.

Nazwy kontenerów

Nazwa kontenera musi być prawidłową nazwą DNS zgodną z następującymi zasadami nazewnictwa:

  • Nazwy kontenerów muszą zaczynać się lub kończyć literą lub cyfrą i mogą zawierać tylko litery, cyfry i znaki łącznika/minus (-).

  • Każdy znak łącznika/minus (-) musi być bezpośrednio poprzedzony i poprzedzony literą lub cyfrą; kolejne łączniki nie są dozwolone w nazwach kontenerów.

  • Wszystkie litery w nazwie kontenera muszą być małymi literami.

  • Nazwy kontenerów muszą zawierać od 3 do 63 znaków.

Nazwy katalogów

Jeśli konto ma hierarchiczną przestrzeń nazw, nazwa katalogu musi być zgodna z następującymi regułami nazewnictwa:

  • Nazwa katalogu może zawierać dowolną kombinację znaków.

  • Nazwa katalogu musi mieć długość co najmniej jednego znaku i nie może być dłuższa niż 1024 znaków.

  • W nazwach katalogów jest rozróżniana wielkość liter.

  • Zastrzeżone znaki adresów URL muszą być poprzedzone odpowiednim znakiem ucieczki.

Uwaga

Unikaj nazw katalogów kończących się kropką (.), ukośnikiem (/), ukośnikiem odwrotnym (\) lub sekwencją lub kombinacją tych dwóch. Żadne segmenty ścieżki nie powinny kończyć się kropką (.).

Zrzut ekranu przedstawiający niedozwolony ukośnik odwrotny.

Nazwy obiektów blob

Nazwa obiektu blob musi być zgodna z następującymi regułami nazewnictwa. Te reguły dotyczą również obiektów blob na kontach, które mają hierarchiczną przestrzeń nazw, chyba że określono inaczej.

  • Nazwa obiektu blob może zawierać dowolną kombinację znaków.

  • Nazwa obiektu blob musi mieć długość co najmniej jednego znaku i nie może być dłuższa niż 1024 znaków w przypadku obiektów blob w usłudze Azure Storage.

    Emulator usługi Azure Storage obsługuje nazwy obiektów blob o długości do 256 znaków. Aby uzyskać więcej informacji, zobacz Use the Azure storage emulator for development and testing (Używanie emulatora usługi Azure Storage do programowania i testowania).

  • W nazwach obiektów blob jest rozróżniana wielkość liter.

  • Zastrzeżone znaki adresów URL muszą być poprzedzone odpowiednim znakiem ucieczki.

  • Istnieją ograniczenia dotyczące liczby segmentów ścieżek składających się z nazwy obiektu blob. Segment ścieżki to ciąg między kolejnymi znakami ogranicznika (na przykład ukośnikiem /do przodu ), który odpowiada katalogowi lub katalogowi wirtualnemu. Następujące ograniczenia segmentu ścieżki dotyczą nazw obiektów blob:

    • Jeśli konto magazynu nie ma włączonej hierarchicznej przestrzeni nazw, liczba segmentów ścieżek składających się z nazwy obiektu blob nie może przekroczyć 254.
    • Jeśli konto magazynu ma włączoną hierarchiczną przestrzeń nazw, liczba segmentów ścieżek składających się z nazwy obiektu blob nie może przekraczać 63 (w tym segmentów ścieżki dla nazwy konta i nazwy kontenera).

Uwaga

Unikaj nazw obiektów blob kończących się kropką (.), ukośnikiem (/), ukośnikiem odwrotnym (\) lub sekwencją lub kombinacją tych dwóch. Żadne segmenty ścieżki nie powinny kończyć się kropką (.).

Zrzut ekranu przedstawiający niedozwolony ukośnik.

Domyślnie usługa Blob service jest oparta na schemacie magazynu płaskiego, a nie na schemacie hierarchicznym. Można jednak określić ogranicznik znaków lub ciągów w nazwie obiektu blob, aby utworzyć hierarchię wirtualną. Na przykład poniższa lista zawiera prawidłowe i unikatowe nazwy obiektów blob. Zwróć uwagę, że ciąg może być prawidłowy zarówno jako nazwa obiektu blob, jak i jako nazwa katalogu wirtualnego w tym samym kontenerze:

  • /a

  • /a.txt

  • /a/b

  • /a/b.txt

Możesz skorzystać z znaku ogranicznika podczas wyliczania obiektów blob.

Nazwy metadanych

Metadane dla kontenera lub zasobu obiektu blob są przechowywane jako pary nazwa-wartość skojarzone z zasobem. Nazwy metadanych muszą być zgodne z regułami nazewnictwa identyfikatorów języka C#.

Należy pamiętać, że nazwy metadanych zachowują wielkość liter, z którą zostały utworzone, ale nie są uwzględniane wielkości liter podczas ustawiania lub odczytywania. Jeśli co najmniej dwa nagłówki metadanych o tej samej nazwie są przesyłane dla zasobu, usługa Blob zwraca kod stanu 400 (Nieprawidłowe żądanie).

Składnia identyfikatora URI zasobu

Każdy zasób ma odpowiedni podstawowy identyfikator URI, który odwołuje się do samego zasobu.

W przypadku konta magazynu podstawowy identyfikator URI zawiera tylko nazwę konta:

https://myaccount.blob.core.windows.net

W przypadku kontenera podstawowy identyfikator URI zawiera nazwę konta i nazwę kontenera:

https://myaccount.blob.core.windows.net/mycontainer

W przypadku obiektu blob podstawowy identyfikator URI zawiera nazwę konta, nazwę kontenera i nazwę obiektu blob:

https://myaccount.blob.core.windows.net/mycontainer/myblob

Konto magazynu może mieć kontener główny, domyślny kontener, który można pominąć z identyfikatora URI. Do obiektu blob w kontenerze głównym można odwoływać się bez nazewnictwa kontenera lub jawnie odwoływać się do kontenera głównego według jego nazwy ($root). Aby uzyskać więcej informacji, zobacz Praca z kontenerem głównym . Oba identyfikatory URI odwołują się do obiektu blob w kontenerze głównym:

https://myaccount.blob.core.windows.net/myblob  
https://myaccount.blob.core.windows.net/$root/myblob  

Migawki obiektów blob

Migawka to wersja obiektu blob tylko do odczytu przechowywana w momencie utworzenia migawki. Za pomocą migawek można utworzyć kopię zapasową lub punkt kontrolny obiektu blob. Nazwa migawki obiektu blob zawiera podstawowy identyfikator URI obiektu blob oraz wartość daty i godziny, która wskazuje, kiedy migawka została utworzona.

Załóżmy na przykład, że obiekt blob ma następujący identyfikator URI:

https://myaccount.blob.core.windows.net/mycontainer/myblob

Identyfikator URI migawki tego obiektu blob jest tworzony w następujący sposób:

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

Poniższa tabela zawiera listę znaków Unicode, które nie są zalecane do użycia w nazwach kontenerów lub obiektów blob. Te znaki, jeśli są używane w połączeniu z innymi znakami na tej liście, mogą zakończyć się niepowodzeniem dekodowania UTF-8 lub MCBS, co prowadzi do niepowodzenia żądania do usługi Blob Service.

znak 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

Zobacz też