Partager via


Émulateur basé sur Linux (aperçu)

La nouvelle génération de l’émulateur Azure Cosmos DB est entièrement basée sur Linux et est disponible sous forme de conteneur Docker. Il prend en charge l’exécution sur une grande variété de processeurs et de systèmes d’exploitation.

Important

Cette version de l'émulateur prend uniquement en charge l'API pour NoSQL en mode passerelle, avec un sous-ensemble sélectionné de fonctionnalités. Pour plus d'informations, consultez la prise en charge des fonctionnalités.

Prérequis

Installation

Obtenez l’image du conteneur Docker en utilisant docker pull. L'image du conteneur est publiée dans le Registre des artefacts Microsoft sous le nom mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview.

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

Exécution

Pour exécuter le conteneur, utilisez docker run. Ensuite, utilisez docker ps pour valider que le conteneur est en cours d'exécution.

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>

Remarque

L'émulateur est composé de deux composants :

  • Explorateur de données - explorer de manière interactive les données dans l'émulateur. Par défaut, cela fonctionne sur le port 1234
  • Émulateur Azure Cosmos DB - une version locale du service de base de données Azure Cosmos DB. Par défaut, cela s'exécute sur le port 8081.

Le point de terminaison de la passerelle de l'émulateur est généralement disponible 8081 sur le port à l'adresse http://localhost:8081. Pour accéder à l’explorateur de données, utilisez l’adresse http://localhost:1234 dans votre navigateur Web. Il faudra peut-être quelques secondes pour que l’explorateur de données soit disponible. Le point de terminaison de la passerelle est généralement disponible immédiatement.

Important

Les Kits de développement logiciel (SDK) .NET et Java ne prennent pas en charge le mode HTTP dans l'émulateur. Étant donné que cette version de l’émulateur commence par HTTP par défaut, vous devez activer explicitement HTTPS lors du démarrage du conteneur (voir ci-dessous). Pour le SDK Java, vous devez également installer des certificats.

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

Commandes Docker

Le tableau suivant résume les commandes Docker disponibles pour configurer l'émulateur. Ce tableau détaille les arguments correspondants, les variables d'environnement, les valeurs autorisées, les paramètres par défaut et les descriptions de chaque commande.

Exigence Arg Env Valeurs autorisées Default Description
Imprimez les paramètres sur stdout à partir du conteneur --help, -h N/A N/A N/A Affichez les informations sur la configuration disponible
Définissez le port du point de terminaison Cosmos --port [INT] PORT INT 8081 Le port du point de terminaison Cosmos sur le conteneur. Vous devez encore publier ce port (par exemple, -p 8081:8081).
Spécifiez le protocole utilisé par le point de terminaison Cosmos --protocol PROTOCOLE https, http, https-insecure http Le protocole du point de terminaison Cosmos sur le conteneur.
Activez l'explorateur de données --enable-explorer ENABLE_EXPLORER true, false true Activez l’exécution de Cosmos Data Explorer sur le même conteneur.
Définissez le port utilisé par l'explorateur de données --explorer-port EXPLORER_PORT INT 1234 Le port du Cosmos Data Explorer sur le conteneur. Vous devez encore publier ce port (par exemple, -p 1234:1234).
L'utilisateur doit pouvoir spécifier le protocole utilisé par l'explorateur, sinon il doit choisir par défaut celui utilisé par le point de terminaison Cosmos --explorer-protocol EXPLORER_PROTOCOL https, http, https-insecure <the value of --protocol> Le protocole du Cosmos Data Explorer sur le conteneur. La valeur par défaut est le paramètre de protocole sur le point de terminaison Cosmos.
Spécifiez la clé via le fichier --key-file [PATH] KEY_FILE PATH <default secret> Remplacez la clé par défaut par la clé spécifiée dans le fichier. Vous devez monter ce fichier dans le conteneur (par exemple, si KEY_FILE=/mykey, vous ajouteriez une option comme celle-ci à votre exécution de docker : --mount type=bind,source=./myKey,target=/myKey)
Définissez le chemin des données --data-path [PATH] DATA_PATH PATH /data Spécifiez un répertoire pour les données. Fréquemment utilisé avec l'option docker run --mount (par exemple, si DATA_PATH=/usr/cosmos/data, vous ajouteriez une option comme celle-ci à votre exécution de docker : --mount type=bind,source=./.local/data,target=/usr/cosmos/data)
Spécifiez le chemin du certificat à utiliser pour https --cert-path [PATH] CERT_PATH PATH <default cert> Spécifiez un chemin vers un certificat pour sécuriser le trafic. Vous devez monter ce fichier dans le conteneur (par exemple, si CERT_PATH=/mycert.pfx, vous ajouteriez une option comme celle-ci à votre exécution de docker : --mount type=bind,source=./mycert.pfx,target=/mycert.pfx)
Spécifiez le secret du certificat à utiliser pour https S/O CERT_SECRET string <default secret> Le secret du certificat spécifié sur CERT_PATH.
Définissez le niveau de journalisation --log-level [LEVEL] LOG_LEVEL quiet, error, warn, info, debug, trace info La verbosité des journaux émis par l'émulateur et l'explorateur de données.
Activez l'envoi d'informations de diagnostic à Microsoft --enable-telemetry ENABLE_TELEMETRY true, false true Activez l'envoi de journaux à Microsoft pour nous aider à améliorer l'émulateur.

Prise en charge des fonctionnalités

Cet émulateur est en développement actif et en aperçu. Par conséquent, toutes les fonctionnalités d’Azure Cosmos DB ne sont pas prises en charge. Certaines fonctionnalités ne seront pas non plus prises en charge à l’avenir. Ce tableau comprend l'état des différentes fonctionnalités et leur niveau de support.

Fonctionnalité Support
API Batch ✅ Pris en charge
API en bloc ✅ Pris en charge
Flux de modification ⚠️ Pas encore implémenté
Créez et lire un document avec des données utf ✅ Pris en charge
Créer une collection ✅ Pris en charge
Créez une collection deux fois en conflit ✅ Pris en charge
Créez une collection avec une politique d'index personnalisée ⚠️ Pas encore implémenté
Créez une collection avec une expiration TTL ⚠️ Pas encore implémenté
Créer une base de données ✅ Pris en charge
Créez une base de données deux fois en conflit ✅ Pris en charge
Créez un document ✅ Pris en charge
Créez une collection partitionnée ⚠️ Pas encore implémenté
Supprimer une collection ✅ Pris en charge
Supprimez la base de données ✅ Pris en charge
Supprimer un document ✅ Pris en charge
Obtenez et modifier les performances de la collection ⚠️ Pas encore implémenté
Insérez un document volumineux ✅ Pris en charge
Document de correctif ⚠️ Pas encore implémenté
Interroger une collection partitionnée en parallèle ⚠️ Pas encore implémenté
Requête avec agrégats ⚠️ Pas encore implémenté
Requête avec et filtre ⚠️ Pas encore implémenté
Requête avec filtre et projection ⚠️ Pas encore implémenté
Requête avec égalité ✅ Pris en charge
Requête avec equals sur id ✅ Pris en charge
Requête avec jointures ⚠️ Pas encore implémenté
Requête avec ordre par ✅ Pris en charge
Requête avec ordre par pour une collection partitionnée ⚠️ Pas encore implémenté
Requête avec ordre par numéros ✅ Pris en charge
Requête avec ordre par chaînes ⚠️ Pas encore implémenté
Requête avec pagination ⚠️ Pas encore implémenté
Requête avec opérateurs de plage date heures ⚠️ Pas encore implémenté
Requête avec opérateurs de plage sur les nombres ⚠️ Pas encore implémenté
Requête avec opérateurs de plage sur des chaînes ⚠️ Pas encore implémenté
Requête avec jointure unique ⚠️ Pas encore implémenté
Requête avec des opérateurs mathématiques de chaîne et de tableau ⚠️ Pas encore implémenté
Requête avec sous-documents ⚠️ Pas encore implémenté
Requête avec deux jointures ⚠️ Pas encore implémenté
Requête avec deux jointures et filtre ⚠️ Pas encore implémenté
Lisez la collection ✅ Pris en charge
Lisez le flux de la collection ⚠️ Pas encore implémenté
Lisez la base de données ✅ Pris en charge
Lisez le flux de la base de données ⚠️ Pas encore implémenté
Lisez le document ✅ Pris en charge
Lisez le flux de documents ✅ Pris en charge
Remplacer le document ✅ Pris en charge
Unités de requête ⚠️ Pas encore implémenté
procédures stockées ❌ Non prévu
Déclencheurs ❌ Non prévu
Fonctions définies par l’utilisateur ❌ Non prévu
Mettre à jour la collection ⚠️ Pas encore implémenté
Mise à jour du document ✅ Pris en charge

Limites

En plus des fonctionnalités non encore prises en charge ou non prévues, la liste suivante inclut les limitations actuelles de l'émulateur.

  • Le SDK .NET pour Azure Cosmos DB ne prend pas en charge l’exécution en masse dans l’émulateur.
  • Les Kits de développement logiciel (SDK) .NET et Java ne prennent pas en charge le mode HTTP dans l'émulateur.

Installation de certificats pour le SDK Java

Lorsque vous utilisez le SDK Java pour Azure Cosmos DB avec cette version de l’émulateur en mode https, il est nécessaire d’installer ses certificats dans votre magasin de confiance Java local.

Obtention de certificat

Dans une fenêtre bash, exécutez ce qui suit :

# 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

Installer le certificat

Accédez au répertoire de votre installation Java où se trouve le fichier cacerts (remplacez ci-dessous par le bon répertoire) :

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

Importez le certificat (vous pouvez être invité à indiquer un mot de passe, la valeur par défaut est « changeit ») :

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

Si vous obtenez une erreur parce que l’alias existe déjà, supprimez-le, puis exécutez à nouveau la commande ci-dessus :

keytool -cacerts -delete -alias cosmos_emulator

Signaler un problème

Si vous rencontrez des problèmes lors de l'utilisation de cette version de l'émulateur, ouvrez un problème dans le référentiel GitHub (https://github.com/Azure/azure-cosmos-db-emulator-docker) et étiquetez-le avec l'étiquette cosmosEmulatorVnextPreview.