Liste des ressources de stockage Blob

L’API du service Blob inclut des opérations pour lister les conteneurs dans un compte (l’opération List Containers ) et les blobs dans un conteneur (l’opération List Blobs ). Ces opérations partagent quelques caractéristiques communes à souligner.

Une opération de listage renvoie une réponse contenant tout ou partie de la liste demandée. L’opération renvoie les entités par ordre alphabétique.

Ce sujet contient les sous-thèmes suivants :

Fixer les résultats maximaux

Récupérer les résultats partiels de la liste avec des marqueurs

Résultats de la liste de filtres

Parcourez l’espace de noms de la blob

Format de réponse XML

Format de réponse Apache Arrow

Fixer les résultats maximaux

Pour spécifier le nombre maximal de résultats à retourner dans un seul appel à une opération de listage, spécifiez une valeur pour le maxresults paramètre sur l’URI de la requête.

Si le nombre maximal de résultats n’est pas spécifié dans la requête ou s’il dépasse 5 000, le serveur retourne jusqu’à un maximum de 5 000 éléments. Si vous spécifiez un nombre maximal de résultats inférieur ou égal à zéro, le service renvoie le code de statut 400 (Mauvaise requête).

Récupérer les résultats partiels de la liste avec des marqueurs

La première fois que l’opération de listage est effectuée sur une ressource particulière, la réponse peut contenir tous les résultats, ou bien un sous-ensemble des résultats et une valeur de marqueur. La valeur du marqueur peut être transmise à l’appel suivant pour retourner le prochain ensemble de résultats (puis le suivant) jusqu’à ce que la liste soit complète et qu’aucun marqueur ne soit retourné.

La valeur du marqueur est retournée sous la forme NextMarker. Dans une réponse XML, NextMarker est un élément du corps de la réponse. Dans une réponse Apache Arrow List Blobs, NextMarker il y a un champ dans les métadonnées du schéma. Quand NextMarker elle est vide, la liste est terminée. La valeur de NextMarker est une valeur de chaîne opaque au client.

Pour retourner le prochain ensemble de résultats lors d’une opération ultérieure, passez la valeur retournée comme NextMarkermarker paramètre sur l’URI de la requête.

Résultats de la liste de filtres

La liste des résultats peut être filtrée en spécifiant une chaîne de préfixes sur la requête en utilisant le prefix paramètre. L’opération de liste renvoie alors les entités dont les noms commencent par ce préfixe. Si le prefix paramètre est spécifié sur l’URI de la requête, le XML de réponse inclut un Prefix élément contenant le ou les caractères préfixe. Par exemple, en spécifiant un préfixe avec la valeur « c », on revient <Prefix>``c``</Prefix> dans le XML de la réponse. Pour un exemple, voir la section Lister les conteneurs plus loin dans ce sujet.

Parcourez l’espace de noms de la blob

L’opération List Blobs possède un paramètre supplémentaire delimiter qui permet à l’appelant de parcourir l’espace de noms blob en utilisant un délimiteur configuré par l’utilisateur. Le délimiteur peut être un caractère unique ou une chaîne. Lorsque la requête inclut ce paramètre, l’opération retourne un élément BlobPrefix. L’élément BlobPrefix est retourné à la place de tous les blobs dont les noms commencent par la même sous-chaîne jusqu’à l’apparition du caractère délimiteur. La valeur de l’élément BlobPrefix est sous-chaîne+délimiteur, où la sous-chaîne est la sous-chaîne commune qui commence un ou plusieurs noms de blobs, et délimiteur est la valeur du paramètre délimiteur .

Vous pouvez utiliser la valeur de BlobPrefix pour effectuer un appel ultérieur pour répertorier les objets blob qui commencent par ce préfixe. Spécifiez la valeur de BlobPrefix pour les requêtes suivantes. De cette façon, vous pouvez parcourir une hiérarchie virtuelle d’objets blob comme s’il s’agissait d’un système de fichiers. Pour un exemple, voir Lister les blobs avec un délimiteur plus loin dans ce sujet.

Notez que chaque BlobPrefix résultat retourné compte pour le résultat maximal.

Gardez aussi à l’esprit que vous ne pouvez pas lister les instantanés de blob si vous incluez un délimiteur avec la requête. Si vous spécifiez une valeur pour le delimiter paramètre et que vous définissez également le include=snapshots paramètre, le service Blob renvoie une erreur InvalidQueryParameter (code d’état HTTP 400 – Mauvaise requête).

Format de réponse XML

La liste produite est un document XML dont le format est similaire à ceux présentés dans les exemples de code plus loin dans ce sujet.

Le corps de réponse inclut les valeurs de tous les paramètres spécifiés sur l’URI de la requête en tant qu’éléments au sein du corps de la réponse.

La DateTime valeur retournée dans l’élément Last-Modified est au format RFC 1123. Pour plus d’informations sur les DateTime valeurs, voir Représentation des valeurs date/heure dans les en-têtes.

Répertorier les conteneurs

Cet exemple montre le résultat d’une opération de listage qui retourne deux conteneurs. L’URI de la demande est la suivante :

GET https://myaccount.blob.core.windows.net/?comp=list&prefix=c&maxresults=3&include=metadata  

Le préfixe « c » était spécifié pour filtrer la liste. Le nombre maximal de résultats à restituer a été fixé à 3. L’étiquette NextMarker indique le nom du conteneur qui sera retourné lors d’une opération de mise en vente ultérieure.

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults AccountName="https://myaccount.blob.core.windows.net/">  
  <Prefix>c</Prefix>  
  <MaxResults>3</MaxResults>  
  <Containers>  
    <Container>  
      <Name>container1</Name>  
      <Url>https://myaccount.blob.core.windows.net/container1</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 18:09:03 GMT</Last-Modified>  
        <Etag>0x8CAE7D0C4AF4487</Etag>  
      </Properties>  
      <Metadata>  
        <Color>orange</Color>  
        <ContainerNumber>01</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container2</Name>  
      <Url>https://myaccount.blob.core.windows.net/container2</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8C24928</Etag>  
      </Properties>  
      <Metadata>  
        <Color>pink</Color>  
        <ContainerNumber>02</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container3</Name>  
      <Url>https://myaccount.blob.core.windows.net/container3</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8EAC0BB</Etag>  
      </Properties>  
      <Metadata>  
        <Color>brown</Color>  
        <ContainerNumber>03</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
  </Containers>  
  <NextMarker>container4</NextMarker>  
</EnumerationResults>  

Liste des blobs et instantanés

Cet exemple montre le résultat d’une opération de listage qui retourne des blobs et des instantanés dans un conteneur nommé mycontainer. L’URI de la demande est la suivante :

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&include=snapshots&include=metadata  

La réponse inclut à la fois les blobs et les snapshots :

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ContainerName="https://myaccount.blob.core.windows.net/mycontainer">  
  <Blobs>  
    <Blob>  
      <Name>blob1.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob1.txt</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>  
        <Etag>0x8CBFF45D8A29A19</Etag>  
        <Content-Length>100</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
      <Metadata>  
        <Color>blue</Color>  
        <BlobNumber>01</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Blob>  
    <Blob>  
      <Name>blob2.txt</Name>  
      <Snapshot>2009-09-09T09:20:03.0427659Z</Snapshot>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt?snapshot=2009-09-09T09%3a20%3a03.0427659Z</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>  
        <Etag>0x8CBFF45D8B4C212</Etag>  
        <Content-Length>5000</Content-Length>  
        <Content-Type>application/octet-stream</Content-Type>  
        <Content-Encoding>gzip</Content-Encoding>  
        <Content-Language />  
        <Content-MD5 />  
        <Cache-Control />  
        <BlobType>BlockBlob</BlobType>  
      </Properties>  
      <Metadata>  
        <Color>green</Color>  
        <BlobNumber>02</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
        <x-ms-invalid-name>nasdf$@#$$</x-ms-invalid-name>  
      </Metadata>  
    </Blob>  
    <Blob>  
      <Name>blob2.txt</Name>  
      <Snapshot>2009-09-09T09:20:03.1587543Z</Snapshot>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt?snapshot=2009-09-09T09%3a20%3a03.1587543Z</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>  
        <Etag>0x8CBFF45D8B4C212</Etag>  
        <Content-Length>5000</Content-Length>  
        <Content-Type>application/octet-stream</Content-Type>  
        <Content-Encoding>gzip</Content-Encoding>  
        <Content-Language />  
        <Content-MD5 />  
        <Cache-Control />  
        <BlobType>BlockBlob</BlobType>  
      </Properties>  
      <Metadata>  
        <Color>green</Color>  
        <BlobNumber>02</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Blob>  
    <Blob>  
      <Name>blob2.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>  
        <Etag>0x8CBFF45D8B4C212</Etag>  
        <Content-Length>5000</Content-Length>  
        <Content-Type>application/octet-stream</Content-Type>  
        <Content-Encoding>gzip</Content-Encoding>  
        <Content-Language />  
        <Content-MD5 />  
        <Cache-Control />  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
      <Metadata>  
        <Color>green</Color>  
        <BlobNumber>02</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Blob>  
    <Blob>  
      <Name>blob3.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob3.txt</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:03 GMT</Last-Modified>  
        <Etag>0x8CBFF45D911FADF</Etag>  
        <Content-Length>16384</Content-Length>  
        <Content-Type>image/jpeg</Content-Type>  
        <Content-Encoding />  
        <Content-Language />  
        <Content-MD5 />  
        <Cache-Control />  
        <x-ms-blob-sequence-number>3</x-ms-blob-sequence-number>  
        <BlobType>PageBlob</BlobType>  
        <LeaseStatus>locked</LeaseStatus>  
      </Properties>  
      <Metadata>  
        <Color>yellow</Color>  
        <BlobNumber>03</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Blob>  
  </Blobs>  
  <NextMarker />   
</EnumerationResults>  

Lister les blobs avec un délimiteur

Cet exemple montre le résultat d’une opération de listage qui renvoie des blobs sous un conteneur nommé mycontainer. L’URI de la demande est la suivante :

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&delimiter=/&maxresults=4  

Dans ce cas, le delimiter paramètre est spécifié comme /. Le corps de la réponse inclut l’étiquette BlobPrefix , qui représente le groupe de blobs commençant par la même sous-chaîne, y compris le délimiteur.

Les taches d’échantillon sous le récipient sont les suivantes. Les quatre premiers sont retournés lors de la première opération de listage, car MaxResults est fixé à 4. Notez que myfolder/blobA.txt et myfolder/blobB.txt sont regroupés dans le corps de la réponse dans l’étiquette BlobPrefix et comptent comme un seul blob en fonction du nombre d’entités retournées. Pour retourner les blobs qui commencent par ce préfixe, effectuez une requête ultérieure dans laquelle le paramètre de préfixe est défini sur myfolder/.

  • blob1.txt

  • blob2.txt

  • mondossier/blobA.txt

  • mondossier/blobB.txt

  • newblob1.txt

  • newblob2.txt

La prochain blob à être retournée est newblob2.txt. Le nom de la blob est indiqué dans l’étiquette NextMarker .

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ContainerName="https://myaccount.blob.core.windows.net/mycontainer">  
  <MaxResults>4</MaxResults>  
  <Blobs>  
    <Blob>  
      <Name>blob1.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob1.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 18:41:57 GMT</Last-Modified>  
        <Etag>0x8CAE7D55D050B8B</Etag>  
        <Content-Length>8</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      <Properties>  
    </Blob>  
    <Blob>  
      <Name>blob2.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 12:18:50 GMT</Last-Modified>  
        <Etag>0x8CAE7D55CF6C339</Etag>  
        <Content-Length>100</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
    </Blob>  
    <BlobPrefix>  
      <Name>myfolder/</Name>  
    </BlobPrefix>  
    <Blob>  
      <Name>newblob1.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/newblob1.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 16:31:57 GMT</Last-Modified>  
        <Etag>0x8CAE7D55CF6C339</Etag>  
        <Content-Length>25</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
    </Blob>  
  </Blobs>  
  <NextMarker>newblob2.txt</NextMarker>  
</EnumerationResults>  

Listez les blobs dans le conteneur racine

Pour lister les blobs dans le conteneur racine, vous pouvez utiliser l’URL suivante :

https://myaccount.blob.core.windows.net/$root?restype=container&comp=list&maxresults=10  

Gardez à l’esprit que lorsque vous listez les blobs dans le conteneur racine, le corps de réponse XML n’inclut pas de référence explicite au conteneur racine dans le champ du URL blob. Voici un exemple de réponse qui liste les blobs dans le conteneur racine :

  
<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ContainerName="https://myaccount.blob.core.windows.net/%24root">  
  <MaxResults>10</MaxResults>  
  <Blobs>  
    <Blob>  
      <Name>rootblob1.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/rootblob1.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 18:41:48 GMT</Last-Modified>  
        <Etag>0x8CAE7D55D050B8B</Etag>  
        <Content-Length>25</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
   </Blob>  
    <Blob>  
      <Name>rootblob2.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/rootblob2.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 18:45:57 GMT</Last-Modified>  
        <Etag>0x8CAE7D55CF6C339</Etag>  
        <Content-Length>14</Content-Length>  
        <Content-Type>text/plain; charset=UTF-8</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
    </Blob>  
  </Blobs>  
</EnumerationResults>  
  

Format de réponse Apache Arrow

À partir de la version 2026-06-06, l’opération List Blobs peut également restituer des résultats au format Apache Arrow . L’opération List Containers ne prend pas en charge Apache Arrow pour le moment.

Note

Le support Apache Arrow pour les List Blobs est actuellement en aperçu public.

La sortie de la liste est un flux binaire Apache Arrow. Chaque exemple dans ce sujet montre le lot d’enregistrements sous forme de tableau dans lequel chaque ligne est un préfixe de blob ou de blob et chaque colonne un champ. Les champs d’horodatage, tels que Last-Modified, sont affichés ici au format ISO 8601. Chaque tableau est suivi des NumberOfRecords valeurs et NextMarker issues des métadonnées du schéma.

Liste des blobs et instantanés au format Apache Arrow

Cet exemple montre le résultat d’une opération de listage qui retourne des blobs et des instantanés dans un conteneur nommé mycontainer. L’URI de la demande est la suivante :

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&include=snapshots&include=metadata

La réponse inclut à la fois les blobs et les snapshots :

Name ResourceType Snapshot Last-Modified Etag Content-Length Content-Type Content-Encoding Content-Language Cache-Control x-ms-blob-sequence-number BlobType LeaseStatus Metadata
blob1.txt BLOB zéro 2009-09-09T09:20:02Z 0x8CBFF45D8A29A19 100 text/html zéro en-US no-cache zéro BlockBlob déverrouillé {Couleur : bleu, NombreDeTache : 01, SomeMetadataName : SomeMetadataValue}
blob2.txt BLOB 2009-09-09T09:20:03.0427659Z 2009-09-09T09:20:02Z 0x8CBFF45D8B4C212 5 000 application/octet-stream gzip zéro zéro zéro BlockBlob zéro {Couleur : green, BlobNumber : 02, SomeMetadataName : SomeMetadataValue, x-ms-invalid-name : nasdf$@#$$}
blob2.txt BLOB 2009-09-09T09:20:03.1587543Z 2009-09-09T09:20:02Z 0x8CBFF45D8B4C212 5 000 application/octet-stream gzip zéro zéro zéro BlockBlob zéro {Couleur : vert, NombreTache : 02, SomeMetadataName : SomeMetadataValue}
blob2.txt BLOB zéro 2009-09-09T09:20:02Z 0x8CBFF45D8B4C212 5 000 application/octet-stream gzip zéro zéro zéro BlockBlob déverrouillé {Couleur : vert, NombreTache : 02, SomeMetadataName : SomeMetadataValue}
blob3.txt BLOB zéro 2009-09-09T09:20:03Z 0x8CBFF45D911FADF 16384 image/jpeg zéro zéro zéro 3 PageBlob verrouillé {Couleur : jaune, NombreTache : 03, SomeMetadataName : SomeMetadataValue}

Les métadonnées du schéma contiennent NumberOfRecords = 5 et NextMarker = vide, ce qui indique que la liste est complète.

Liste des blobs avec un délimiteur au format Apache Arrow

Cet exemple montre le résultat d’une opération de listage qui renvoie des blobs sous un conteneur nommé mycontainer. L’URI de la demande est la suivante :

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&delimiter=/&maxresults=4

Dans ce cas, le delimiter paramètre est spécifié comme /. Le corps de réponse inclut un enregistrement avec ResourceType défini à blobprefix, qui représente le groupe de blobs commençant par la même sous-chaîne, y compris le délimiteur.

Les taches d’échantillon sous le récipient sont les suivantes. Les quatre premiers sont retournés lors de la première opération de listage, car MaxResults est fixé à 4. Notez que myfolder/blobA.txt et myfolder/blobB.txt sont regroupés dans le corps de la réponse dans l’enregistrement blobprefix et comptent comme un seul blob en fonction du nombre d’entités retournées. Pour retourner les blobs qui commencent par ce préfixe, effectuez une requête ultérieure dans laquelle le paramètre de préfixe est défini sur myfolder/.

  • blob1.txt

  • blob2.txt

  • mondossier/blobA.txt

  • mondossier/blobB.txt

  • newblob1.txt

  • newblob2.txt

newblob2.txt sera le prochain blob retourné lorsqu’il opaqueString est passé comme marker paramètre dans une requête ultérieure.

Name ResourceType Last-Modified Etag Content-Length Content-Type Content-Language Cache-Control BlobType LeaseStatus
blob1.txt BLOB 2009-09-27T18:41:57Z 0x8CAE7D55D050B8B 8 text/html en-US no-cache BlockBlob déverrouillé
blob2.txt BLOB 2009-09-27T12:18:50Z 0x8CAE7D55CF6C339 100 text/html en-US no-cache BlockBlob déverrouillé
mondossier/ blobprefixe zéro zéro zéro zéro zéro zéro zéro zéro
newblob1.txt BLOB 2009-09-27T16:31:57Z 0x8CAE7D55CF6C339 25 text/html en-US no-cache BlockBlob déverrouillé

Les métadonnées du schéma contiennent NumberOfRecords = 4 et .NextMarker = opaqueString

Voir aussi

Liste des conteneurs
Lister les blobs
Concepts de service blob
Versioning pour les services stockage Azure