Ett vanligt användningsfall för emulatorn är att fungera som en utvecklingsdatabas när du skapar dina program. Att använda emulatorn för utveckling kan hjälpa dig att lära dig egenskaper för att skapa och modellera data för en databas som Azure Cosmos DB utan att medföra några tjänstkostnader. Om du använder emulatorn som en del av ett automationsarbetsflöde kan du dessutom se till att du kan köra samma uppsättning integreringstester. Du kan se till att samma tester körs både lokalt på utvecklingsdatorn och via fjärranslutning i ett kontinuerligt integrationsjobb.
Hämta Linux-containeravbildningen mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator med hjälp av taggen mongodb från containerregistret till den lokala Docker-värden.
Docker-containervarianten för emulatorn stöder inte API:et för Apache Cassandra.
Starta emulatorns körbara (Microsoft.Azure.Cosmos.Emulator.exe) vid %ProgramFiles%\Azure Cosmos DB Emulator sökvägen. Använd dessa parametrar för att konfigurera emulatorn:
Docker-containervarianten av emulatorn stöder inte API:et för Apache Gremlin.
Starta emulatorns körbara (Microsoft.Azure.Cosmos.Emulator.exe) vid %ProgramFiles%\Azure Cosmos DB Emulator sökvägen. Använd dessa parametrar för att konfigurera emulatorn:
Docker-containervarianten för emulatorn stöder inte API:et för table.
Starta emulatorns körbara (Microsoft.Azure.Cosmos.Emulator.exe) vid %ProgramFiles%\Azure Cosmos DB Emulator sökvägen. Använd dessa parametrar för att konfigurera emulatorn:
Gå till https://localhost:8081/_explorer/index.html för att komma åt datautforskaren.
Docker-containeravbildningen (Windows) stöder inte API:et för MongoDB.
Starta emulatorns körbara (Microsoft.Azure.Cosmos.Emulator.exe) vid %ProgramFiles%\Azure Cosmos DB Emulator sökvägen. Använd dessa parametrar för att konfigurera emulatorn:
beskrivning
EnableMongoDbEndpoint
Aktiverar API för MongoDB-slutpunkt vid angiven MongoDB-version.
Certifikatet för emulatorn är tillgängligt på sökvägen _explorer/emulator.pem i containern som körs. Använd curl för att ladda ned certifikatet från containern som körs till den lokala datorn.
Du kan behöva ändra värden (eller IP-adressen) och portnumret om du tidigare har ändrat dessa värden.
Installera certifikatet enligt den process som vanligtvis används för operativsystemet. I Linux kopierar du till exempel certifikatet till /usr/local/share/ca-certificates/ sökvägen.
För Linux-system återskapar du certifikatpaketet med hjälp av lämpligt kommando för Din Linux-distribution.
För Debianbaserade Linux-system (till exempel Ubuntu) använder du:
Bash
sudo update-ca-certificates
För Red Hat-baserade Linux-system (till exempel CentOS, Fedora) använder du:
Bash
sudo update-ca-trust
Mer detaljerade instruktioner finns i dokumentationen som är specifik för ditt operativsystem.
Certifikatet för emulatorn finns i mappen C:\CosmosDB.Emulator\bind-mount i containern som körs. Mappen innehåller också ett skript för att automatiskt installera certifikatet.
Använd docker cp för att kopiera hela mappen till den lokala datorn.
Den lokala Windows-installationen av emulatorn importerar automatiskt TLS/SSL-certifikaten. Inga ytterligare åtgärder krävs.
Ansluta till emulatorn från SDK
Varje SDK innehåller en klientklass som vanligtvis används för att ansluta SDK:et till ditt Azure Cosmos DB-konto. Genom att använda emulatorns autentiseringsuppgifter kan du ansluta SDK:n till emulatorinstansen i stället.
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
await container.UpsertItemAsync(item);
Kör .NET-programmet.
Bash
dotnet run
Varning
Om du får ett SSL-fel kan du behöva inaktivera TLS/SSL för ditt program. Detta inträffar ofta om du utvecklar på din lokala dator med hjälp av Azure Cosmos DB-emulatorn i en container och inte har importerat containerns SSL-certifikat. Lös problemet genom att konfigurera klientens alternativ för att inaktivera TLS/SSL-validering innan du skapar klienten:
Om du får ett SSL-fel kan du behöva inaktivera TLS/SSL för ditt program. Detta inträffar ofta om du utvecklar på din lokala dator med hjälp av Azure Cosmos DB-emulatorn i en container och inte har importerat containerns SSL-certifikat. Lös problemet genom att konfigurera programmet för att inaktivera TLS/SSL-validering innan du skapar klienten:
Python
import urllib3
urllib3.disable_warnings()
Om du fortfarande får SSL-fel är det möjligt att Python hämtar certifikaten från ett annat certifikatarkiv. Följ dessa steg för att fastställa sökvägen där Python letar efter certifikaten:
Viktigt
Om du använder en virtuell Python-miljö (venv) kontrollerar du att den är aktiverad innan du kör kommandona!
Öppna en terminal
Starta Python-tolken genom att skriva python eller python3, beroende på din Python-version.
Kör följande kommandon i Python-tolken:
Python
from requests.utils import DEFAULT_CA_BUNDLE_PATH
print(DEFAULT_CA_BUNDLE_PATH)
I en virtuell miljö kan sökvägen vara (åtminstone i Ubuntu):
Utanför en virtuell miljö kan sökvägen vara (åtminstone i Ubuntu):
Bash
/etc/ssl/certs/ca-certificates.crt
När du har identifierat DEFAULT_CA_BUNDLE_PATH öppnar du en ny terminal och kör följande kommandon för att lägga till emulatorcertifikatet i certifikatpaketet:
Viktigt
Om DEFAULT_CA_BUNDLE_PATH variabel pekar på en systemkatalog kan det uppstå ett felmeddelande om nekad behörighet. I det här fallet måste du köra kommandona med förhöjd behörighet (som rot). Du måste också uppdatera och återskapa certifikatpaketet när du har kört de angivna kommandona.
Bash
# Add a new line to the certificate bundleecho >> /path/to/ca_bundle
Bash
# Append the emulator certificate to the certificate bundle
cat /path/to/emulatorcert.crt >> /path/to/ca_bundle
Om du får ett SSL-fel kan du behöva inaktivera TLS/SSL för ditt program. Detta inträffar ofta om du utvecklar på din lokala dator med hjälp av Azure Cosmos DB-emulatorn i en container och inte har importerat containerns SSL-certifikat. Lös problemet genom att konfigurera programmet för att inaktivera TLS/SSL-validering innan du skapar klienten:
Lägg till ett användningsblock för MongoDB.Driver namnområdet.
C#
using MongoDB.Driver;
Skapa en ny instans av MongoClient med emulatorns autentiseringsuppgifter.
C#
var client = new MongoClient("mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true&retrywrites=false");
Om du får ett SSL-fel kan du behöva inaktivera TLS/SSL för ditt program. Detta inträffar ofta om du utvecklar på din lokala dator med hjälp av Azure Cosmos DB-emulatorn i en container och inte har importerat containerns SSL-certifikat. Lös problemet genom att konfigurera programmet för att inaktivera TLS/SSL-validering innan du skapar klienten:
var createKeyspace = await session.PrepareAsync("CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {'class':'basicclass', 'replication_factor': 1};");await session.ExecuteAsync(createKeyspace.Bind());
var createTable = await session.PrepareAsync("CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, name text)");await session.ExecuteAsync(createTable.Bind());
Skapa ett nytt objekt i tabellen med .ExecuteAsync Använd Bind för att tilldela egenskaper till objektet.
C#
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
var createItem = await session.PrepareAsync("INSERT INTO cosmicworks.products (id, name) VALUES (?, ?)");
var createItemStatement = createItem.Bind(item.id, item.name);
await session.ExecuteAsync(createItemStatement);
Importera PROTOCOL_TLS_CLIENT, SSLContextoch CERT_NONE från modulen ssl . Cluster Importera sedan från modulencassandra.cluster. PlainTextAuthProvider Importera slutligen från modulencassandra.auth.
Python
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
Skapa en ny TLS/SSL-kontextvariabel med hjälp av SSLContext. Konfigurera kontexten så att den inte verifierar emulatorns självsignerade certifikat.
Skapa ett nytt nyckelområde och en ny tabell med hjälp av session.execute.
Python
session.execute(
"CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {'class':'ba""sicclass', 'replication_factor': 1};"
)
session.execute(
"CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, nam""e text)"
)
Använd session.execute för att skapa ett nytt objekt i tabellen.
Client Importera typen och auth namnområdet från modulencassandra-driver.
JavaScript
import { Client, auth } from'cassandra-driver'
Använd PlainTextAuthProvider för att skapa ett nytt objekt för emulatorns autentiseringsuppgifter. Använd Client för att ansluta till emulatorn med autentiseringsuppgifterna.
JavaScript
const credentials = new auth.PlainTextAuthProvider('localhost',
'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==')
const client = new Client({
contactPoints: [
'localhost:10350'
],
authProvider: credentials,
localDataCenter: 'South Central US'
})
Använd execute för att köra ett kommando på serversidan för att skapa ett nyckelområde och en tabell.
JavaScript
await client.execute(
'CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {\'class\':\'basicclass\', \'replication_factor\': 1};'
)
await client.execute(
'CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, name text)'
)
Använd execute igen för att skapa ett nytt objekt med parametrar.
Om du får ett SSL-fel kan du behöva inaktivera TLS/SSL för ditt program. Detta inträffar ofta om du utvecklar på din lokala dator med hjälp av Azure Cosmos DB-emulatorn i en container och inte har importerat containerns SSL-certifikat. Lös problemet genom att konfigurera klienten för att inaktivera TLS/SSL-validering:
Innan du börjar kräver API:et för Apache Gremlin att du skapar dina resurser i emulatorn. Skapa en databas med namnet db1 och en container med namnet coll1. Dataflödesinställningarna är irrelevanta för den här guiden och kan anges så lågt som du vill.
var server = new GremlinServer(
hostname: "localhost",
port: 8901,
username: "/dbs/db1/colls/coll1",
password: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
);
usingvar client = new GremlinClient(
gremlinServer: server,
messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
);
gremlin Installera paketet från Node Package Manager.
Bash
npm install --save gremlin
Skapa filen app.js .
Importera modulen gremlin .
JavaScript
import gremlin from'gremlin'
Använd PlainTextSaslAuthenticator för att skapa ett nytt objekt för emulatorns autentiseringsuppgifter. Använd Client för att ansluta till emulatorn med autentiseringsuppgifterna.
Skapa en ny instans av TableServiceClient med emulatorns autentiseringsuppgifter.
C#
var serviceClient = new TableServiceClient(
connectionString: "DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;");
Om du får ett SSL-fel kan du behöva inaktivera TLS/SSL för ditt program. Detta inträffar ofta om du utvecklar på din lokala dator med hjälp av Azure Cosmos DB-emulatorn i en container och inte har importerat containerns SSL-certifikat. Lös problemet genom att konfigurera klienten för att inaktivera TLS/SSL-validering:
Använda emulatorn i ett GitHub Actions CI-arbetsflöde
Om du vill köra en kontinuerlig integreringsarbetsbelastning som automatiskt validerar ditt program använder du Azure Cosmos DB-emulatorn med en testsvit från valfri ramverk. Azure Cosmos DB-emulatorn är förinstallerad i varianten windows-latest av GitHub Actions värdbaserade löpare.
Starta emulatorn från kommandoraden med hjälp av olika argument eller PowerShell-kommandon. Mer information finns i kommandoradsargument för emulatorn.
Testa python-programmet och databasåtgärderna med .pytest
Kontrollera att enhetstestpaketet för ditt program fungerar som förväntat.
Bash
pip install -U pytest
pytest
Skapa ett nytt arbetsflöde på din GitHub-lagringsplats i en fil med namnet .github/workflows/ci.yml.
Lägg till ett jobb i arbetsflödet för att starta Azure Cosmos DB-emulatorn med hjälp av PowerShell och köra enhetstestpaketet.
Starta emulatorn från kommandoraden med hjälp av olika argument eller PowerShell-kommandon. Mer information finns i kommandoradsargument för emulatorn.
Använd mocha för att testa ditt Node.js-program och dess databasändringar.
Kontrollera att enhetstestpaketet för ditt program fungerar som förväntat.
Bash
npm install --global mocha
mocha
Skapa ett nytt arbetsflöde på din GitHub-lagringsplats i en fil med namnet .github/workflows/ci.yml.
Lägg till ett jobb i arbetsflödet för att starta Azure Cosmos DB-emulatorn med hjälp av PowerShell och köra enhetstestpaketet.
Starta emulatorn från kommandoraden med hjälp av olika argument eller PowerShell-kommandon. Mer information finns i kommandoradsargument för emulatorn.
Lär dig hur du felsöker problem som rör tjänstens otillgänglighet, certifikatkryptering och versionshantering när du använder Azure Cosmos DB-emulatorn.
Estefani Arroyo ansluter sig till Scott Hanselman för att prata om och demonstrera Azure Cosmos DB-skrivbordsverktyg för att utveckla, fråga och testa dina program. Azure Cosmos DB Linux-emulatorn ger en emulering med hög återgivning av Azure Cosmos DB-tjänsten. Med Azure Data Studio Cosmos DB API för Mongo DB-tillägget kan du ansluta till dina Mongo-resurser och köra frågor mot dina data med mongo-gränssnittet. Kapitel 00:00 – Introduktion 01:03 – Konfigurationsalternativ för emulatorn 02:20 – Förutsättni