Freigeben über


Verwenden des Azurite-Emulators für die lokale Azure Storage-Entwicklung

Der Azurite Open-Source-Emulator bietet eine kostenlose lokale Umgebung zum Testen Ihrer cloudbasierten Anwendungen. Wenn Sie mit der lokalen Funktionsweise Ihrer Anwendung zufrieden sind, wechseln Sie zu einem Azure Storage-Konto in der Cloud.

Azurite ist ein einfacher Speicheremulator, der in JavaScript geschrieben wurde und auf Node.js ausgeführt wird, der den Azure Storage-Dienst für die lokale Entwicklung simuliert. Es unterstützt die Blob-, Warteschlangen- und Tabellenspeicherdienste und bietet plattformübergreifende Unterstützung unter Windows, Linux und macOS. Hilfe zum Installieren und Ausführen von Azurite finden Sie unter Installieren und Ausführen des Azurite-Emulators.

Azurite ermöglicht entwicklern auch das Ausführen von Tests mit einer lokalen Speicherumgebung, die das Verhalten von Azure simuliert, was für integrations- und End-to-End-Tests von entscheidender Bedeutung ist. Weitere Informationen zur Verwendung von Azurite für automatisierte Tests finden Sie unter Use Azurite to run automated tests.

Azurite ersetzt den Azure Storage-Emulator und wird weiterhin aktualisiert, um die neuesten Versionen von Azure Storage-APIs zu unterstützen.

Unterschiede zwischen Azurite und Azure Storage

Es gibt funktionale Unterschiede zwischen einer lokalen Instanz von Azurite und einem Azure Storage-Konto in der Cloud.

Von Bedeutung

Azurite unterstützt nur die Blob-, Warteschlangen- und Tabellenspeicherdienste. Azure Files oder Azure Data Lake Storage Gen2 werden nicht unterstützt, bietet aber plattformübergreifende Unterstützung unter Windows, Linux und macOS.

Endpunkt- und Verbindungs-URL

Die Dienstendpunkte für Azurite unterscheiden sich von den Endpunkten eines Azure Storage-Kontos. Auf dem lokalen Computer wird keine Auflösung von Domänennamen ausgeführt, sodass Azurite-Endpunkte lokale Adressen sein müssen.

Wenn Sie eine Ressource in einem Azure Storage-Konto adressiert haben, ist der Kontoname Teil des URI-Hostnamens. Die adressete Ressource ist Teil des URI-Pfads:

<http|https>://<account-name>.<service-name>.core.windows.net/<resource-path>

Der folgende URI ist eine gültige Adresse für ein BLOB in einem Azure Storage-Konto:

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

URL im IP-Stil

Da auf dem lokalen Computer keine Domänennamen aufgelöst werden, ist der Kontoname Teil des URI-Pfads anstelle des Hostnamens. Verwenden Sie das folgende URI-Format für eine Ressource in Azurite:

http://<local-machine-address>:<port>/<account-name>/<resource-path>

Die folgende Adresse kann für den Zugriff auf ein Blob in Azurite verwendet werden:

http://127.0.0.1:10000/myaccount/mycontainer/myblob.txt

URL im Produktionsstil

Optional können Sie Ihre Hostdatei so ändern, dass sie auf ein Konto mit der URL im Produktionsstil zugreifen kann.

Fügen Sie zuerst ihrer Hostdatei eine oder mehrere Zeilen hinzu. Beispiel:

127.0.0.1 account1.blob.localhost
127.0.0.1 account1.queue.localhost
127.0.0.1 account1.table.localhost

Legen Sie als Nächstes Umgebungsvariablen fest, um angepasste Speicherkonten und Schlüssel zu aktivieren:

set AZURITE_ACCOUNTS="account1:key1:key2"

Sie könnten weitere Konten hinzufügen. Weitere Informationen finden Sie im Abschnitt "Benutzerdefinierte Speicherkonten und Schlüssel " des Artikels "Connect to Azurite ".

Starten Sie Azurite, und verwenden Sie eine angepasste Verbindungszeichenfolge, um auf Ihr Konto zuzugreifen. Im folgenden Beispiel wird von der Verbindungszeichenfolge davon ausgegangen, dass die Standardports verwendet werden.

DefaultEndpointsProtocol=http;AccountName=account1;AccountKey=key1;BlobEndpoint=http://account1.blob.localhost:10000;QueueEndpoint=http://account1.queue.localhost:10001;TableEndpoint=http://account1.table.localhost:10002;

Greifen Sie nicht auf dieses Standardkonto mit Dem Azure Storage-Explorer zu. Es liegt ein Fehler vor, dass der Speicher-Explorer immer den Kontonamen im URL-Pfad hinzufügt, was zu Fehlern führt.

Bei Verwendung von Azurite mit einer URL im Produktionsstil sollte der Kontoname standardmäßig der Hostname im vollqualifizierten Domänennamen sein, z http://devstoreaccount1.blob.localhost:10000/container. B. . Um die URL im Produktionsstil mit dem Kontonamen im URL-Pfad zu verwenden, z http://foo.bar.com:10000/devstoreaccount1/container. B. müssen Sie den --disableProductStyleUrl Parameter verwenden, wenn Sie Azurite starten.

Wenn Sie als Anforderungs-URI-Host (z. B.: http://host.docker.internal:10000/devstoreaccount1/container) Azureite den Kontonamen aus dem Anforderungs-URI-Pfad abrufenhost.docker.internal. Dieses Verhalten gilt unabhängig davon, ob Sie den --disableProductStyleUrl Parameter verwenden, wenn Sie Azurite starten.

Skalierung und Leistung

Azurite unterstützt keine große Anzahl verbundener Kunden. Es gibt keine Leistungsgarantie. Azurite ist für Entwicklungs- und Testzwecke vorgesehen.

Fehlerbehandlung

Azurite ist an der Azure Storage-Fehlerbehandlungslogik ausgerichtet, aber es gibt Unterschiede. Fehlermeldungen können z. B. unterschiedlich sein, während Fehlerstatuscodes ausgerichtet sind.

RA-GRS

Azurite unterstützt die georedundante Replikation mit Lesezugriff (RA-GRS). Greifen Sie für Speicherressourcen auf den sekundären Speicherort zu, indem Sie den Kontonamen anfügen -secondary . Beispielsweise kann die folgende Adresse für den Zugriff auf ein Blob mithilfe der schreibgeschützten sekundären In Azurite verwendet werden:

http://127.0.0.1:10000/devstoreaccount1-secondary/mycontainer/myblob.txt

Tabellenunterstützung

Die Unterstützung für Tabellen in Azurite befindet sich derzeit in der Vorschau. Weitere Informationen finden Sie im Projekt Azurite V3 Table .

Für die Unterstützung dauerhafter Funktionen sind Tabellen erforderlich.

Von Bedeutung

Die Azurite-Unterstützung für Tabellenspeicher befindet sich derzeit in DER VORSCHAU. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Azurite ist Open Source

Beiträge und Vorschläge für Azurite sind willkommen. Wechseln Sie zur Azureite GitHub-Projektseite oder GitHub-Probleme für Meilensteine und Arbeitsaufgaben, die wir für anstehende Features und Fehlerbehebungen nachverfolgen. Detaillierte Arbeitsaufgaben werden auch in GitHub nachverfolgt.

Arbeitsbereichsstruktur

Die folgenden Dateien und Ordner können beim Initialisieren von Azurite am Arbeitsbereichsort erstellt werden.

  • __blobstorage__ - Verzeichnis, das den Azurite-BLOB-Dienst enthält, gespeicherte Binärdaten
  • __queuestorage__ - Verzeichnis mit Azurite-Warteschlangendienst gespeicherte Binärdaten
  • __tablestorage__ - Verzeichnis mit Azurite-Tabellendienst gespeicherte Binärdaten
  • __azurite_db_blob__.json - Azureite Blob-Dienst-Metadatendatei
  • __azurite_db_blob_extent__.json - Azureite-Blob-Dienst-Metadatendatei für das Ausmaß der Metadaten
  • __azurite_db_queue__.json - Azureite-Warteschlangendienst-Metadatendatei
  • __azurite_db_queue_extent__.json - Azureite-Warteschlangendienst-Metadatendatei für das Ausmaß der Metadaten
  • __azurite_db_table__.json - Azureite-Tabellendienst-Metadatendatei
  • __azurite_db_table_extent__.json - Azureite-Tabellendienst-Metadatendatei

Um Azurite zu bereinigen, löschen Sie die Dateien und Ordner, und starten Sie den Emulator neu.

Nächste Schritte