Interagieren mit den Azure Storage-APIs

Abgeschlossen

Azure Storage bietet eine REST-API für die Arbeit mit den Containern und Daten, die in den einzelnen Konten gespeichert sind. Jeder Datentyp, den Sie speichern können, verfügt über eine eigene, unabhängige API. Zur Erinnerung: Wir haben vier spezifische Datentypen:

  • Blobs für unstrukturierte Daten (beispielsweise Binär- und Textdateien).
  • Warteschlangen für beständiges Messaging.
  • Tabellen für die strukturierte Speicherung von Schlüssel-Wert-Paaren.
  • Dateien für herkömmliche SMB-Dateifreigaben.

Verwenden der REST-API

Alle Apps, die HTTP-/HTTPS-Anforderungen senden und HTTP-/HTTPS-Antworten empfangen können, können auf die Storage-REST-APIs über das Internet zugreifen.

Wenn Sie also beispielsweise alle Blobs in einem Container auflisten möchten, würden Sie eine Anforderung ähnlich der folgenden erstellen:

GET https://[url-for-service-account]/?comp=list&include=metadata

Diese Anforderung gibt einen XML-Block mit für das Konto spezifischen Daten zurück:

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults AccountName="https://[url-for-service-account]/">  
  <Containers>  
    <Container>  
      <Name>container1</Name>  
      <Url>https://[url-for-service-account]/container1</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 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://[url-for-service-account]/container2</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 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://[url-for-service-account]/container3</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 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>  

Dieser Ansatz ist jedoch mit manuellem Analyseaufwand sowie mit der Erstellung von HTTP-Paketen für die jeweilige API verbunden. Aus diesem Grund bietet Azure vorkonfigurierte Clientbibliotheken, die die Arbeit mit dem Dienst für gängige Sprachen und Frameworks erleichtern.

Verwenden einer Clientbibliothek

Clientbibliotheken können App-Entwicklern sehr viel Arbeit sparen, da die API getestet wurde und häufig praktischere Wrapper für die Datenmodelle bereitstellt, die von der REST-API gesendet und empfangen werden.

Microsoft stellt Azure-Clientbibliotheken bereit, die zahlreiche Sprachen und Frameworks unterstützen. Hierzu zählen unter anderem Folgende:

  • .NET
  • Java
  • Python
  • Node.js
  • Go


Logos of supported frameworks you can use with Azure.

Mit dem folgenden Codeausschnitt können Sie beispielsweise die gleiche Blobliste in C# abrufen:

string containerName = "...";
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

var blobs = container.GetBlobs();
foreach (var blob in blobs)
{
    Console.WriteLine($"{blob.Name} --> Created On: {blob.Properties.CreatedOn:YYYY-MM-dd HH:mm:ss}  Size: {blob.Properties.ContentLength}");
}

JavaScript-Variante:

const containerName = '...';
const containerClient = blobServiceClient.getContainerClient(containerName);

let blobs = containerClient.listBlobsFlat();
for await (const blob of blobs) {
  console.log(`${blob.name} --> Created: ${blob.properties.createdOn}   Size: ${blob.properties.contentLength}`);
}

Hinweis

Bei den Clientbibliotheken handelt es sich lediglich um einfache Wrapper, die die REST-API einschließen. Die Bibliotheken erledigen genau das, was Sie durchführen, wenn Sie die Webdienste direkt verwenden. Dank ihres Open-Source-Charakters sind die Bibliotheken zudem äußerst transparent. Links zum Quellcode dieser Bibliotheken auf GitHub finden Sie im Abschnitt Zusätzliche Ressourcen am Ende dieses Moduls.

Als Nächstes fügen wir Ihrer App die Unterstützung von Clientbibliotheken hinzu.