Freigeben über


Linux-basierter Emulator (Vorschau)

Die nächste Generation des Azure Cosmos DB-Emulators ist vollständig Linux-basiert und als Docker-Container verfügbar. Er unterstützt die Ausführung auf einer Vielzahl von Prozessoren und Betriebssystemen.

Wichtig

Diese Version des Emulators unterstützt nur die API für NoSQL im Gatewaymodus mit einer Teilmenge von Features. Weitere Informationen finden Sie unter Featureunterstützung.

Voraussetzungen

Installation

Rufen Sie das Docker-Containerimage mit docker pull ab. Das Containerimage wird in der Microsoft-Artefaktregistrierung als mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview veröffentlicht.

docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview

Wird ausgeführt

Verwenden Sie zum Ausführen des Containers docker run. Überprüfen Sie anschließend mit docker ps, ob der Container ausgeführt wird.

docker run --detach --publish 8081:8081 --publish 1234:1234 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview

docker ps
CONTAINER ID   IMAGE                                                             COMMAND                  CREATED         STATUS         PORTS                                                                                  NAMES
c1bb8cf53f8a   mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview  "/bin/bash -c /home/…"   5 seconds ago   Up 5 seconds   0.0.0.0:1234->1234/tcp, :::1234->1234/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   <container-name>

Hinweis

Der Emulator besteht aus zwei Komponenten:

  • Daten-Explorer: zum interaktiven Untersuchen der Daten im Emulator. Die Ausführung erfolgt standardmäßig an Port 1234.
  • Azure Cosmos DB-Emulator: eine lokale Version des Azure Cosmos DB-Datenbankdiensts. Die Ausführung erfolgt standardmäßig an Port 8081.

Der Gatewayendpunkt des Emulators ist in der Regel am Port 8081 über die Adresse http://localhost:8081 erreichbar. Verwenden Sie für die Navigation zum Daten-Explorer die Adresse http://localhost:1234 in Ihrem Webbrowser. Es kann einige Sekunden dauern, bis der Daten-Explorer verfügbar ist. Der Gatewayendpunkt ist in der Regel sofort verfügbar.

Wichtig

Die .NET und Java-SDKs unterstützen den HTTP-Modus im Emulator nicht. Da diese Version des Emulators standardmäßig mit HTTP beginnt, müssen Sie HTTPS beim Starten des Containers explizit aktivieren (siehe unten). Für das Java-SDK müssen Sie auch Zertifikate installieren.

docker run --detach --publish 8081:8081 --publish 1234:1234 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview --protocol https

Docker-Befehle

In der folgenden Tabelle sind die verfügbaren Docker-Befehle zum Konfigurieren des Emulators zusammengefasst. In dieser Tabelle finden Sie die entsprechenden Argumente, Umgebungsvariablen, zulässigen Werte, Standardeinstellungen und Beschreibungen der einzelnen Befehle.

Anforderung Argument Env Zulässige Werte Default Beschreibung
Ausgeben der Einstellungen an stdout aus dem Container --help, -h Anzeigen von Informationen zur verfügbaren Konfiguration
Festlegen des Ports des Cosmos-Endpunkts --port [INT] PORT INT 8081 Der Port des Cosmos-Endpunkts im Container. Sie müssen diesen Port noch veröffentlichen (z. B. mit -p 8081:8081).
Angeben des vom Cosmos-Endpunkt verwendeten Protokolls --protocol PROTOKOLL https, http, https-insecure http Das Protokoll des Cosmos-Endpunkts im Container.
Aktivieren des Daten-Explorers --enable-explorer ENABLE_EXPLORER true, false true Aktivieren Sie die Ausführung des Cosmos-Daten-Explorers im selben Container.
Festlegen des vom Daten-Explorer verwendeten Ports --explorer-port EXPLORER_PORT INT 1234 Der Port des Cosmos-Daten-Explorers im Container. Sie müssen diesen Port noch veröffentlichen (z. B. mit -p 1234:1234).
Benutzende sollten in der Lage sein, das vom Explorer verwendete Protokoll anzugeben, andernfalls wird standardmäßig das vom Cosmos-Endpunkt verwendete Protokoll festgelegt. --explorer-protocol EXPLORER_PROTOCOL https, http, https-insecure <the value of --protocol> Das Protokoll des Cosmos-Daten-Explorers im Container. Standardmäßig wird das auf dem Cosmos-Endpunkt festgelegte Protokoll verwendet.
Angeben des Schlüssels über eine Datei --key-file [PATH] KEY_FILE PFAD <default secret> Überschreiben Sie den Standardschlüssel mit dem in der Datei angegebenen Schlüssel. Sie müssen diese Datei in den Container einbinden (z. B. indem Sie bei „KEY_FILE=/mykey“ eine Option wie die folgende in Ihrer Docker-Ausführung hinzufügen: --mount type=bind,source=./myKey,target=/myKey)
Festlegen des Datenpfads --data-path [PATH] DATA_PATH PFAD /data Geben Sie ein Verzeichnis für die Daten an. Häufig zusammen mit der docker run --mount-Option verwendet (z. B. indem Sie bei „DATA_PATH=/usr/cosmos/data“ eine Option wie die folgende in Ihrer Docker-Ausführung hinzufügen: --mount type=bind,source=./.local/data,target=/usr/cosmos/data)
Angeben des für HTTPS verwendeten Zertifikatpfads --cert-path [PATH] CERT_PATH PFAD <default cert> Geben Sie einen Pfad zu einem Zertifikat zum Schützen des Datenverkehrs an. Sie müssen diese Datei in den Container einbinden (z. B. indem Sie bei „CERT_PATH=/mycert.pfx“ eine Option wie die folgende in Ihrer Docker-Ausführung hinzufügen: --mount type=bind,source=./mycert.pfx,target=/mycert.pfx)
Angeben des für HTTPS verwendeten Zertifikatgeheimnisses N/V CERT_SECRET Zeichenfolge <default secret> Das Geheimnis für das in CERT_PATH angegebene Zertifikat.
Festlegen des Protokolliergrads --log-level [LEVEL] LOG_LEVEL quiet, error, warn, info, debug, trace info Die Ausführlichkeit von Protokollen, die vom Emulator und vom Daten-Explorer ausgegeben werden.
Aktivieren der Übermittlung von Diagnoseinformationen an Microsoft --enable-telemetry ENABLE_TELEMETRY true, false true Aktivieren Sie das Senden von Protokollen an Microsoft, damit der Emulator weiter verbessert werden kann.

Featureunterstützung

Dieser Emulator befindet sich in der aktiven Entwicklung und wird als Vorschauversion verfügbar gemacht. Daher werden nicht alle Azure Cosmos DB-Features unterstützt. Einige Features werden auch in Zukunft nicht unterstützt. In dieser Tabelle finden Sie den Status verschiedener Features mit dem Grad ihrer Unterstützung.

Funktion Unterstützung
Batch-API ✅ Unterstützt
Massen-API ✅ Unterstützt
Änderungsfeed ⚠ Noch nicht implementiert
Erstellen und Lesen von Dokumenten mit UTF-Daten ✅ Unterstützt
Erstellen der Sammlung ✅ Unterstützt
Erstellen einer Sammlung trotz Konflikt ✅ Unterstützt
Erstellen einer Sammlung mit benutzerdefinierter Indexrichtlinie ⚠ Noch nicht implementiert
Erstellen einer Sammlung mit TTL-Ablauf ⚠ Noch nicht implementiert
Erstellen der Datenbank ✅ Unterstützt
Erstellen einer Datenbank trotz Konflikt ✅ Unterstützt
Erstellen von Dokumenten ✅ Unterstützt
Erstellen partitionierter Sammlungen ⚠ Noch nicht implementiert
Sammlung löschen ✅ Unterstützt
Löschen von Datenbanken ✅ Unterstützt
Löschen eines Dokuments ✅ Unterstützt
Abrufen und Ändern der Sammlungsleistung ⚠ Noch nicht implementiert
Einfügen großer Dokumente ✅ Unterstützt
Reparieren von Dokumenten ⚠ Noch nicht implementiert
Paralleles Abfragen partitionierter Sammlungen ⚠ Noch nicht implementiert
Abfragen mit Aggregaten ⚠ Noch nicht implementiert
Abfragen und Filtern ⚠ Noch nicht implementiert
Abfragen mit und Filtern und Projektionen ⚠ Noch nicht implementiert
Abfrage mit Gleichheit ✅ Unterstützt
Abfrage auf Gleichheit bei ID ✅ Unterstützt
Abfragen mit Verknüpfungen ⚠ Noch nicht implementiert
Abfragen mit „ORDER BY“ ✅ Unterstützt
Abfrage mit „ORDER BY“ für partitionierte Sammlungen ⚠ Noch nicht implementiert
Abfrage mit „ORDER BY“ von Zahlen ✅ Unterstützt
Abfrage mit „ORDER BY“ von Zeichenfolgen ⚠ Noch nicht implementiert
Abfrage mit Paginierung ⚠ Noch nicht implementiert
Abfragen mit Bereichsoperatoren für Datums-/Uhrzeitwerte ⚠ Noch nicht implementiert
Abfragen mit Bereichsoperatoren für Zahlen ⚠ Noch nicht implementiert
Abfragen mit Bereichsoperatoren für Zeichenfolgen ⚠ Noch nicht implementiert
Abfragen mit einer einzelnen Verknüpfung ⚠ Noch nicht implementiert
Abfragen mit Zeichenfolgen-, mathematischen und Arrayoperatoren ⚠ Noch nicht implementiert
Abfragen mit Unterdokumenten ⚠ Noch nicht implementiert
Abfragen mit zwei Verknüpfungen ⚠ Noch nicht implementiert
Abfragen mit zwei Verknüpfungen und Filtern ⚠ Noch nicht implementiert
Lesen von Sammlungen ✅ Unterstützt
Lesen des Sammlungsfeeds ⚠ Noch nicht implementiert
Lesen in Datenbanken ✅ Unterstützt
Lesen des Datenbankfeeds ⚠ Noch nicht implementiert
Lesen von Dokumenten ✅ Unterstützt
Lesen des Dokumentfeeds ✅ Unterstützt
Dokument ersetzen ✅ Unterstützt
Anforderungseinheiten ⚠ Noch nicht implementiert
Gespeicherten Prozeduren ❌ Nicht geplant
Trigger ❌ Nicht geplant
UDFs ❌ Nicht geplant
Aktualisieren der Sammlung ⚠ Noch nicht implementiert
Aktualisieren von Dokumenten ✅ Unterstützt

Begrenzungen

Zusätzlich zu den Features, die noch nicht unterstützt werden oder nicht geplant sind, zeigt die folgende Liste aktuelle Einschränkungen des Emulators.

  • Das .NET SDK für Azure Cosmos DB unterstützt keine Massenausführungen im Emulator.
  • Die .NET und Java-SDKs unterstützen den HTTP-Modus im Emulator nicht.

Installieren von Zertifikaten für Java-SDK

Wenn Sie das Java SDK für Azure Cosmos DB mit dieser Version des Emulators im HTTPS-Modus verwenden, ist es erforderlich, die Zertifikate in Ihrem lokalen Java Trust Store zu installieren.

Abrufen des Zertifikats

Führen Sie in einem bash-Fenster Folgendes aus:

# If the emulator was started with /AllowNetworkAccess, replace localhost with the actual IP address of it:
EMULATOR_HOST=localhost
EMULATOR_PORT=8081
EMULATOR_CERT_PATH=/tmp/cosmos_emulator.cert
openssl s_client -connect ${EMULATOR_HOST}:${EMULATOR_PORT} </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $EMULATOR_CERT_PATH

Installieren des Zertifikats

Navigieren Sie zum Verzeichnis Ihrer Java-Installation, in dem sich cacerts-Datei befindet (setzen Sie unten das richtige Verzeichnis ein):

cd "C:/Program Files/Eclipse Adoptium/jdk-17.0.10.7-hotspot/bin"

Importieren Sie das Zertifikat (möglicherweise werden Sie nach einem Kennwort gefragt, der Standardwert lautet „changeit”):

keytool -cacerts -importcert -alias cosmos_emulator -file $EMULATOR_CERT_PATH

Wenn ein Fehler angezeigt wird, weil der Alias bereits vorhanden ist, löschen Sie ihn, und führen Sie dann den obigen Vorgang erneut aus:

keytool -cacerts -delete -alias cosmos_emulator

Melden von Problemen

Wenn Probleme mit der Verwendung dieser Version des Emulators auftreten, erstellen Sie ein Issue im GitHub-Repository (https://github.com/Azure/azure-cosmos-db-emulator-docker) mit dem Tag cosmosEmulatorVnextPreview.