Blobs mit JavaScript auflisten

In diesem Artikel wird beschrieben, wie Blobs mithilfe der Azure Storage-Clientbibliothek für JavaScript aufgelistet werden.

Voraussetzungen

  • Bei den Beispielen in diesem Artikel wird davon ausgegangen, dass Sie bereits ein Projekt eingerichtet haben, das mit der Azure Blob Storage Clientbibliothek für JavaScript arbeitet. Wie Sie Ihr Projekt einrichten, einschließlich der Installation von Paketen, dem Import von Modulen und der Erstellung eines autorisierten Client-Objekts für die Arbeit mit Datenressourcen, erfahren Sie unter Erste Schritte mit Azure Blob Storage und JavaScript.
  • Der Autorisierungsmechanismus muss über Berechtigungen zum Auflisten von Blobs verfügen. Weitere Informationen finden Sie im Autorisierungsleitfaden für die folgenden REST-API-Vorgänge:

Informationen über Optionen für das Auflisten von Blobs

Wenn Sie Blobs über Ihren Code auflisten, können Sie einige Optionen angeben, um zu steuern, wie Ergebnisse von Azure Storage zurückgegeben werden. Sie können die Anzahl der Ergebnisse festlegen, die in den einzelnen Ergebnissätzen zurückgegeben werden sollen, und dann die nachfolgenden Sätze abrufen. Sie können ein Präfix angeben, um Blobs zurückzugeben, deren Namen mit dem jeweiligen Zeichen oder der Zeichenfolge beginnen. Sie können Blobs auch in einer flachen Auflistungsstruktur anzeigen oder hierarchisch auflisten. Bei einer hierarchischen Auflistung werden Blobs so zurückgegeben, als wären sie in Ordnern organisiert.

Um die Blobs in einem Container mithilfe einer flachen Auflistung aufzulisten, rufen Sie die folgende Methode auf:

Um die Blobs in einem Container mithilfe einer hierarchischen Auflistung aufzulisten, rufen Sie die folgende Methode auf:

Festlegen der Anzahl der zurückgegebenen Ergebnisse

Standardmäßig gibt ein Auflistungsvorgang bis zu 5000 Ergebnisse in einem Durchgang zurück, Sie können jedoch die Anzahl der Ergebnisse angeben, die von jedem Auflistungsvorgang zurückgegeben werden soll. Die Beispiele in diesem Artikel zeigen Ihnen, wie Ergebnisse in Seiten zurückgegeben werden. Weitere Informationen zu Paginierungskonzepten finden Sie unter Paginierung mit dem Azure SDK für JavaScript.

Filtern von Ergebnissen mit einem Präfix

Geben Sie zum Filtern der Liste von Blobs eine Zeichenfolge für die Eigenschaft prefix in ContainerListBlobsOptions an. Die Präfixzeichenfolge kann ein oder mehrere Zeichen enthalten. Azure Storage gibt nur die Blobs zurück, deren Namen mit diesem Präfix beginnen. Wenn Sie beispielsweise die Präfixzeichenfolge sample- übergeben, werden nur Blobs zurückgegeben, deren Namen mit sample- beginnen.

Blobmetadaten oder andere Informationen einbeziehen

Um Blob-Metadaten in die Ergebnisse einzubeziehen, setzen Sie die Eigenschaft includeMetadata im Rahmen von ContainerListBlobsOptions auf true. Sie können auch Momentaufnahmen, Tags oder Versionen in die Ergebnisse einschließen, indem Sie die entsprechende Eigenschaft auf true festlegen.

Flache Auflistung und hierarchische Auflistung im Vergleich

Blobs in Azure Storage sind in einem flachen Paradigma organisiert statt in einem hierarchischen Paradigma (wie ein klassisches Dateisystem). Man kann jedoch Blobs in virtuelle Verzeichnisse organisieren, um eine Ordnerstruktur nachzuahmen. Ein virtuelles Verzeichnis bildet einen Teil des Blobnamens und wird durch das Trennzeichen angezeigt.

Wenn Sie also Blobs in virtuellen Verzeichnissen organisieren möchten, verwenden Sie ein Trennzeichen im Blobnamen. Das Standardtrennzeichen ist ein Schrägstrich (/), doch können Sie ein beliebiges Zeichen als Trennzeichen angeben.

Wenn du deine Blobs mit einem Delimiter benennenst, kannst du Blobs hierarchisch auflisten. Bei einem hierarchischen Auflistungsvorgang gibt Azure Storage alle virtuellen Verzeichnisse und Blobs unter dem übergeordneten Objekt zurück. Sie können den Auflistungsvorgang rekursiv aufrufen, um die Hierarchie zu durchlaufen – ähnlich wie beim programmgesteuerten Durchlaufen eines klassischen Dateisystems.

Verwenden einer flachen Auflistung

Ein Auflistungsvorgang gibt Blobs standardmäßig in einer flachen Auflistung zurück. In einer flachen Auflistung werden Blobs nicht nach virtuellem Verzeichnis organisiert.

Das folgende Beispiel listet die Blobs im angegebenen Container in einer flachen Liste auf. Dieses Beispiel beinhaltet Blobmomentaufnahmen und Blobmetadaten, sofern vorhanden:

async function listBlobsFlat(containerClient) {

  const maxPageSize = 2;

  // Some options for filtering results
  const listOptions = {
    includeMetadata: true,
    includeSnapshots: true,
    prefix: '' // Filter results by blob name prefix
  };

  console.log("Blobs flat list (by page):");
  for await (const response of containerClient
    .listBlobsFlat(listOptions)
    .byPage({ maxPageSize })) {
    console.log("- Page:");
    if (response.segment.blobItems) {
      for (const blob of response.segment.blobItems) {
        console.log(`  - ${blob.name}`);
      }
    }
  }
}

Die Beispielausgabe sieht ähnlich wie hier aus:

Blobs flat list (by page):
- Page:
  - a1
  - a2
- Page:
  - folder1/b1
  - folder1/b2
- Page:
  - folder2/sub1/c
  - folder2/sub1/d

Hinweis

In der gezeigten Beispielausgabe wird davon ausgegangen, dass Sie über ein Speicherkonto mit einem flachen Namespace verfügen. Wenn Sie die Funktion des hierarchischen Namespace für Ihr Speicherkonto aktivieren, sind Verzeichnisse nicht virtuell. Stattdessen sind sie konkrete, unabhängige Objekte. Daher werden Verzeichnisse in der Liste als Blobs der Länge Null angezeigt.

Eine alternative Auflistungsoption für die Arbeit mit einem hierarchischen Namespace finden Sie unter Auflisten von Verzeichnisinhalten (Azure Data Lake Storage).

Verwenden einer hierarchischen Auflistung

Wenn Sie einen Auflistungsvorgang hierarchisch aufrufen, gibt Azure Storage die virtuellen Verzeichnisse und Blobs auf der ersten Hiearchieebene zurück.

Verwenden Sie zum hierarchischen Auflisten von Blobs die folgende Methode:

Im folgenden Beispiel werden die Blobs im angegebenen Container mithilfe einer hierarchischen Auflistung aufgelistet. In diesem Beispiel wird der Präfixparameter zunächst auf eine leere Zeichenfolge festgelegt, um alle Blobs im Container aufzulisten. Anschließend ruft das Beispiel den Auflistungsvorgang rekursiv auf, um die virtuelle Verzeichnishierarchie zu durchlaufen und Blobs aufzulisten.

// Recursively list virtual folders and blobs
async function listBlobHierarchical(containerClient, delimiter='/') {
  
  const maxPageSize = 20;

  // Some options for filtering list
  const listOptions = {
    prefix: '' // Filter results by blob name prefix   
  };

  let i = 1;
  console.log(`Folder ${delimiter}`);

  for await (const response of containerClient
    .listBlobsByHierarchy(delimiter, listOptions)
    .byPage({ maxPageSize })) {

    console.log(`   Page ${i++}`);
    const segment = response.segment;

    if (segment.blobPrefixes) {

      // Do something with each virtual folder
      for await (const prefix of segment.blobPrefixes) {

        // Build new delimiter from current and next
        await listBlobHierarchical(containerClient, `${delimiter}${prefix.name}`);
      }
    }

    for (const blob of response.segment.blobItems) {

      // Do something with each blob
      console.log(`\tBlobItem: name - ${blob.name}`);
    }
  }
}

Die Beispielausgabe sieht ähnlich wie hier aus:

Folder /
   Page 1
        BlobItem: name - a1
        BlobItem: name - a2
   Page 2
Folder /folder1/
   Page 1
        BlobItem: name - folder1/b1
        BlobItem: name - folder1/b2
Folder /folder2/
   Page 1
Folder /folder2/sub1/
   Page 1
        BlobItem: name - folder2/sub1/c
        BlobItem: name - folder2/sub1/d
   Page 2
        BlobItem: name - folder2/sub1/e

Hinweis

Blob-Snapshots können nicht in einer hierarchischen Auflistungsoperation aufgeführt werden.

Liste der Blobs im Apache Arrow-Format (Vorschau)

Important

Die Auflistung von Blobs im Apache Arrow-Format befindet sich derzeit in der VORSCHAU. Dieses Szenario erfordert eine Beta- (Vorschau-)Version der Azure Blob Storage-Clientbibliothek für JavaScript (zum Beispiel eine Vorschauversion 12.34.0-beta.1 oder später). @azure/storage-blob Vorschaufunktionen werden ohne Service-Level-Vereinbarung bereitgestellt und sind für Produktionsworkloads nicht empfohlen. Manche Funktionen werden möglicherweise nicht unterstützt oder haben eingeschränkte Funktionen. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbedingungen für Microsoft Azure-Vorschauversionen.

Diese Funktion basiert auf der bestehenden List Blobs API. Anstatt das Standard-XML zu verwenden, verwendet es das kompakte, spaltenartige Apache Arrow-Format als Antwortformat auf dem Draht. Du aktivierst es, indem du eine einzige Option im Container-Listing-Call einlegst. Das JavaScript SDK dekodiert Apache Arrow im Hintergrund und liefert weiterhin dieselben Blob-Objekte zurück. Dieser Ansatz verbessert den Listdurchsatz und reduziert die clientseitige CPU beim Aufzählen großer Container. Sie bewahrt den Antwortvertrag, auf den Anwendungen angewiesen sind.

Warning

Das Auflisten von Blobs im Apache Arrow-Format wird auf Speicherkonten mit aktiviertem hierarchischen Namensraum (Azure Data Lake Storage) nicht unterstützt.

Um Apache Arrow-formatierte Ergebnisse anzufordern, setzen Sie die responseFormat Eigenschaft der Listing-Optionen auf StorageResponseFormat.Arrow, und geben Sie die Optionen dann an ContainerClient.listBlobsFlat weiter. Importiere das StorageResponseFormat Enum aus @azure/storage-blob.

Das folgende Beispiel listet die Blobs in einem Container auf und fordert die Ergebnisse im Apache Arrow-Format an:

const { StorageResponseFormat } = require("@azure/storage-blob");

const options = {
  prefix: "FolderA/",
  responseFormat: StorageResponseFormat.Arrow,
};

for await (const blob of containerClient.listBlobsFlat(options)) {
  console.log("Blob name: " + blob.name);
}

Ressourcen

Um mehr darüber zu erfahren, wie man Blobs mit der Azure Blob Storage-Clientbibliothek für JavaScript auflistet, siehe die folgenden Ressourcen.

Codebeispiele

REST-API-Vorgänge

Das Azure SDK für JavaScript enthält Bibliotheken, die auf der Azure REST API aufbauen. Durch die Nutzung dieser Bibliotheken können Sie mit REST-API-Operationen über vertraute JavaScript-Paradigmen interagieren. Die Methoden der Clientbibliothek zum Auflisten von Blobs verwenden den folgenden REST-API-Vorgang:

Ressourcen zur Clientbibliothek

Siehe auch