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.
Förutsättningar
Installera emulatorn
Det finns flera varianter av emulatorn och varje variant har en relativt friktionsfri installationsprocess.
Kom igång genom att hämta Linux-varianten av containeravbildningen från Microsoft Container Registry (MCR).
Hämta Linux-containeravbildningen mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator
från containerregistret till den lokala Docker-värden.
docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
Kontrollera att emulatorbilden är tillgänglig på den lokala Docker-värden.
docker images
Kom igång genom att hämta Windows-varianten av containeravbildningen från Microsoft Container Registry (MCR).
Hämta Windows-containeravbildningen mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
från containerregistret till den lokala Docker-värden.
docker pull mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
Kontrollera att emulatorbilden är tillgänglig på den lokala Docker-värden.
docker images
Kom igång genom att ladda ned och installera den senaste versionen av Azure Cosmos DB-emulatorn på den lokala datorn.
Ladda ned Azure Cosmos DB-emulatorn.
Kör installationsprogrammet på den lokala datorn med administratörsbehörighet.
Emulatorn installerar automatiskt lämpliga utvecklarcertifikat och konfigurerar brandväggsregler på den lokala datorn.
Kom igång genom att hämta Linux-varianten av containeravbildningen från Microsoft Container Registry (MCR).
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 pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:mongodb
Kontrollera att emulatorbilden är tillgänglig på den lokala Docker-värden.
docker images
Docker-containeravbildningen (Windows) stöder inte API:et för MongoDB.
Kom igång genom att ladda ned och installera den senaste versionen av Azure Cosmos DB-emulatorn på den lokala datorn.
Ladda ned Azure Cosmos DB-emulatorn.
Kör installationsprogrammet på den lokala datorn med administratörsbehörighet.
Emulatorn installerar automatiskt lämpliga utvecklarcertifikat och konfigurerar brandväggsregler på den lokala datorn.
Docker-containervarianten (Linux eller Windows) för emulatorn stöder inte API:et för Apache Cassandra, API för Apache Gremlin eller API för table.
Kom igång genom att ladda ned och installera den senaste versionen av Azure Cosmos DB-emulatorn på den lokala datorn.
Ladda ned Azure Cosmos DB-emulatorn.
Kör installationsprogrammet på den lokala datorn med administratörsbehörighet.
Emulatorn installerar automatiskt lämpliga utvecklarcertifikat och konfigurerar brandväggsregler på den lokala datorn.
Starta emulatorn
När du har laddat ned startar du emulatorn med det angivna API:et aktiverat.
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:
|
beskrivning |
EnableCassandraEndpoint |
Aktiverar API för Apache Cassandra-slutpunkt. |
CassandraPort |
Portnummer som ska användas för slutpunkten. |
Microsoft.Azure.Cosmos.Emulator.exe /EnableCassandraEndpoint /CassandraPort=65200
Emulatorn öppnar automatiskt datautforskaren med hjälp av URL:en https://localhost:8081/_explorer/index.html
.
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:
|
beskrivning |
EnableGremlinEndpoint |
Aktiverar API för Apache Gremlin-slutpunkt. |
GremlinPort |
Portnummer som ska användas för slutpunkten. |
Microsoft.Azure.Cosmos.Emulator.exe /EnableGremlinEndpoint /GremlinPort=65400
Emulatorn öppnar automatiskt datautforskaren med hjälp av URL:en https://localhost:8081/_explorer/index.html
.
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:
|
beskrivning |
EnableTableEndpoint |
Aktiverar API för tabellslutpunkt. |
TablePort |
Portnummer som ska användas för slutpunkten. |
Microsoft.Azure.Cosmos.Emulator.exe /EnableTableEndpoint /TablePort=65500
Emulatorn öppnar automatiskt datautforskaren med hjälp av URL:en https://localhost:8081/_explorer/index.html
.
Kör en ny container med containeravbildningen och följande konfiguration:
|
beskrivning |
AZURE_COSMOS_EMULATOR_PARTITION_COUNT (Valfritt) |
Ange antalet partitioner som ska användas. |
AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE (Valfritt) |
Aktivera datapersistence mellan emulatorkörningar. |
AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE (Valfritt) |
Åsidosätt emulatorns standard-IP-adress. |
För Linux-system använder du:
docker run \
--publish 8081:8081 \
--publish 10250-10255:10250-10255 \
--name linux-emulator \
--detach \
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
För Windows-system använder du:
$parameters = @(
"--publish", "8081:8081"
"--publish", "10250-10255:10250-10255"
"--name", "windows-emulator"
"--detach"
)
docker run @parameters mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
Gå till https://localhost:8081/_explorer/index.html
för att komma åt datautforskaren.
Skapa en ny katalog för bindningsmonteringen
Kör en ny container med hjälp av containeravbildningen.
$parameters = @(
"--publish", "8081:8081"
"--publish", "10250-10255:10250-10255"
"--name", "windows-emulator"
"--detach"
)
docker run @parameters mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
Gå till https://localhost:8081/_explorer/index.html
för att komma åt datautforskaren.
Starta emulatorn genom att välja programmet i Windows Start-menyn.
Du kan också starta emulatorns körbara (Microsoft.Azure.Cosmos.Emulator.exe
) vid %ProgramFiles%\Azure Cosmos DB Emulator
sökvägen.
Du kan också starta emulatorn från kommandoraden. Använd dessa parametrar för att konfigurera emulatorn:
|
beskrivning |
Port |
Portnummer som ska användas för API:et för NoSQL-slutpunkten. |
Microsoft.Azure.Cosmos.Emulator.exe /Port=65000
Emulatorn öppnar automatiskt datautforskaren med hjälp av URL:en https://localhost:8081/_explorer/index.html
.
Kör en ny container med containeravbildningen och följande konfiguration:
|
beskrivning |
AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT |
Ange vilken version av MongoDB-slutpunkten som ska användas. Slutpunkter som stöds är: 3.2 , 3.6 eller 4.0 . |
AZURE_COSMOS_EMULATOR_PARTITION_COUNT (Valfritt) |
Ange antalet partitioner som ska användas. |
AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE (Valfritt) |
Aktivera datapersistence mellan emulatorkörningar. |
AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE (Valfritt) |
Åsidosätt emulatorns standard-IP-adress. |
För Linux-system använder du:
docker run \
--publish 8081:8081 \
--publish 10250:10250 \
--env AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT=4.0 \
--name linux-emulator \
--detach \
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:mongodb
För Windows-system använder du:
$parameters = @(
"--publish", "8081:8081"
"--publish", "10250:10250"
"--env", "AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT=4.0"
"--name", "windows-emulator"
"--detach"
)
docker run @parameters mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:mongodb
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. |
MongoPort |
Portnummer som ska användas för slutpunkten. |
Microsoft.Azure.Cosmos.Emulator.exe /EnableMongoDbEndpoint=4.0 /MongoPort=65200
Emulatorn öppnar automatiskt datautforskaren med hjälp av URL:en https://localhost:8081/_explorer/index.html
.
Importera emulatorns TLS/SSL-certifikat
Importera emulatorns TLS/SSL-certifikat för att använda emulatorn med önskad utvecklar-SDK utan att inaktivera TLS/SSL på klienten.
Docker-containervarianten (Linux eller Windows) för emulatorn stöder inte API:et för Apache Cassandra, API för Apache Gremlin eller API för table.
Den lokala Windows-installationen av emulatorn importerar automatiskt TLS/SSL-certifikaten. Inga ytterligare åtgärder krävs.
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.
Hämta certifikatet från containern som körs.
För Linux-system använder du:
curl --insecure https://localhost:8081/_explorer/emulator.pem > ~/emulatorcert.crt
För Windows-system använder du:
$parameters = @{
Uri = 'https://localhost:8081/_explorer/emulator.pem'
Method = 'GET'
OutFile = 'emulatorcert.crt'
SkipCertificateCheck = $True
}
Invoke-WebRequest @parameters
Återskapa certifikatpaketet med hjälp av lämpligt kommando för operativsystemet.
För Debianbaserade Linux-system (till exempel Ubuntu) använder du:
sudo update-ca-certificates
För Red Hat-baserade Linux-system (till exempel CentOS, Fedora) använder du:
sudo update-ca-trust
För Windows-system använder du:
certutil -f -addstore "Root" ~/emulatorcert.crt
Mer detaljerade instruktioner finns i dokumentationen som är specifik för ditt operativsystem.
Docker-containeravbildningen (Windows) stöder inte API:et för MongoDB.
Den lokala Windows-installationen av emulatorn importerar automatiskt TLS/SSL-certifikaten. Inga ytterligare åtgärder krävs.
Certifikatet för emulatorn är tillgängligt på sökvägen /_explorer/emulator.pem
i containern som körs.
Ladda ned certifikatet från containern som körs till den lokala datorn.
För Linux-system använder du:
curl --insecure https://localhost:8081/_explorer/emulator.pem > ~/emulatorcert.crt
För Windows-system använder du:
$parameters = @{
Uri = 'https://localhost:8081/_explorer/emulator.pem'
Method = 'GET'
OutFile = 'emulatorcert.crt'
SkipCertificateCheck = $True
}
Invoke-WebRequest @parameters
Kommentar
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 använder du:
cp ~/emulatorcert.crt /usr/local/share/ca-certificates/
För Windows-system använder du:
$parameters = @{
FilePath = 'emulatorcert.crt'
CertStoreLocation = 'Cert:\CurrentUser\Root'
}
Import-Certificate @parameters
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:
sudo update-ca-certificates
För Red Hat-baserade Linux-system (till exempel CentOS, Fedora) använder du:
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.
docker cp windows-emulator:C:\CosmosDB.Emulator\bind-mount .
Kör skriptet importcert.ps1 i mappen .
.\bind-mount\importcert.ps1
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.
Använd Azure Cosmos DB API för NoSQL .NET SDK för att ansluta till emulatorn från ett .NET-program.
Starta i en tom mapp.
Skapa ett nytt .NET-konsolprogram
dotnet new console
Microsoft.Azure.Cosmos
Lägg till paketet från NuGet.
dotnet add package Microsoft.Azure.Cosmos
Öppna filen Program.cs .
Ta bort befintligt innehåll i filen.
Lägg till ett användningsblock för Microsoft.Azure.Cosmos
namnområdet.
using Microsoft.Azure.Cosmos;
Skapa en ny instans av CosmosClient med emulatorns autentiseringsuppgifter.
using CosmosClient client = new(
accountEndpoint: "https://localhost:8081/",
authKeyOrResourceToken: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
);
Skapa en ny databas och container med hjälp av CreateDatabaseIfNotExistsAsync och CreateContainerIfNotExistsAsync.
Database database = await client.CreateDatabaseIfNotExistsAsync(
id: "cosmicworks",
throughput: 400
);
Container container = await database.CreateContainerIfNotExistsAsync(
id: "products",
partitionKeyPath: "/id"
);
Skapa ett nytt objekt i containern med .UpsertItemAsync
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
await container.UpsertItemAsync(item);
Kör .NET-programmet.
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:
CosmosClientOptions options = new ()
{
HttpClientFactory = () => new HttpClient(new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
}),
ConnectionMode = ConnectionMode.Gateway,
};
using CosmosClient client = new(
...,
...,
clientOptions: options
);
Använd Azure Cosmos DB API för NoSQL Python SDK för att ansluta till emulatorn från ett Python-program.
Starta i en tom mapp.
azure-cosmos
Importera paketet från Python Package Index.
pip install azure-cosmos
Skapa filen app.py .
Importera CosmosClient
och PartitionKey
från modulen azure.cosmos
.
from azure.cosmos import CosmosClient, PartitionKey
Skapa en ny CosmosClient med emulatorns autentiseringsuppgifter.
client = CosmosClient(
url="<https://localhost:8081>",
credential=(
"C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGG"
"yPMbIZnqyMsEcaGQy67XIw/Jw=="
),
)
Skapa en ny databas och container med hjälp av create_database_if_not_exists och create_container_if_not_exists.
database = client.create_database_if_not_exists(
id="cosmicworks",
offer_throughput=400,
)
container = database.create_container_if_not_exists(
id="products",
partition_key=PartitionKey(
path="/id",
),
)
Använd upsert_item för att skapa ett nytt objekt i containern.
item = {"id": "68719518371", "name": "Kiama classic surfboard"}
container.upsert_item(item)
Kör Python-programmet.
python app.py
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 programmet för att inaktivera TLS/SSL-validering innan du skapar klienten:
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:
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):
path/to/venv/lib/pythonX.XX/site-packages/certifi/cacert.pem
Utanför en virtuell miljö kan sökvägen vara (åtminstone i Ubuntu):
/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.
# Add a new line to the certificate bundle
echo >> /path/to/ca_bundle
# Append the emulator certificate to the certificate bundle
cat /path/to/emulatorcert.crt >> /path/to/ca_bundle
Använd Azure Cosmos DB API för NoSQL Node.js SDK för att ansluta till emulatorn från ett Node.js/JavaScript-program.
Starta i en tom mapp.
Initiera en ny modul.
npm init es6 --yes
@azure/cosmos
Installera paketet från Node Package Manager.
npm install --save @azure/cosmos
Skapa filen app.js .
CosmosClient
Importera typen från modulen@azure/cosmos
.
import { CosmosClient } from '@azure/cosmos'
Använd CosmosClient
för att skapa en ny klientinstans med emulatorns autentiseringsuppgifter.
const cosmosClient = new CosmosClient({
endpoint: 'https://localhost:8081/',
key: 'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=='
})
Använd Databases.createIfNotExists
och Containers.createIfNotExists
för att skapa en databas och container.
const { database } = await cosmosClient.databases.createIfNotExists({
id: 'cosmicworks',
throughput: 400
})
const { container } = await database.containers.createIfNotExists({
id: 'products',
partitionKey: {
paths: [
'/id'
]
}
})
Upsert ett nytt objekt med .Items.upsert
const item = {
id: '68719518371',
name: 'Kiama classic surfboard'
}
container.items.upsert(item)
Kör programmet Node.js.
node app.js
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 programmet för att inaktivera TLS/SSL-validering innan du skapar klienten:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0
Använd MongoDB .NET-drivrutinen för att ansluta till emulatorn från ett .NET-program.
Starta i en tom mapp.
Skapa ett nytt .NET-konsolprogram
dotnet new console
MongoDB.Driver
Lägg till paketet från NuGet.
dotnet add package MongoDB.Driver
Öppna filen Program.cs .
Ta bort befintligt innehåll i filen.
Lägg till ett användningsblock för MongoDB.Driver
namnområdet.
using MongoDB.Driver;
Skapa en ny instans av MongoClient
med emulatorns autentiseringsuppgifter.
var client = new MongoClient(
"mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true&retrywrites=false"
);
Hämta databasen och containern med hjälp av GetDatabase
och GetCollection<>
.
var database = client.GetDatabase("cosmicworks");
var collection = database.GetCollection<dynamic>("products");
Skapa ett nytt objekt i XXX med .InsertOneAsync
var item = new
{
name = "Kiama classic surfboard"
};
await collection.InsertOneAsync(item);
Kör .NET-programmet.
dotnet run
Använd MongoDB Python-drivrutinen för att ansluta till emulatorn från ett Python-program.
Starta i en tom mapp.
pymongo
Importera paketet från Python Package Index.
pip install pymongo
Skapa filen app.py .
Importera modulerna os
, sys
och pymongo
.
import pymongo
Skapa en ny MongoClient
med emulatorns autentiseringsuppgifter.
client = pymongo.MongoClient(
host=(
"mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2"
"nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/a"
"dmin?ssl=true"
),
tls=True,
)
Skapa en ny databas och container med hjälp av list_database_names
och list_collection_names
tillsammans med och CreateDatabase
CreateCollection
anpassade kommandon.
db = client["cosmicworks"]
if "cosmicworks" not in client.list_database_names():
db.command(
{
"customAction": "CreateDatabase",
"offerThroughput": 400,
}
)
collection = db["products"]
if "products" not in db.list_collection_names():
db.command({"customAction": "CreateCollection", "collection": "products"})
Använd update_one
för att skapa ett nytt objekt i containern.
item = {"id": "68719518371", "name": "Kiama classic surfboard"}
collection.update_one(
filter={"id": item["id"]}, update={"$set": item}, upsert=True
)
Kör Python-programmet.
python app.py
Använd MongoDB Node.js-drivrutinen för att ansluta till emulatorn från ett Node.js/JavaScript-program.
Starta i en tom mapp.
Initiera en ny modul.
npm init es6 --yes
mongodb
Installera paketet från Node Package Manager.
npm install --save mongodb
Skapa filen app.js .
MongoClient
Importera typen från modulenmongodb
.
import { MongoClient } from 'mongodb'
Använd MongoClient
för att skapa en ny klientinstans med emulatorns autentiseringsuppgifter. Använd connect
för att ansluta till emulatorn.
const client = new MongoClient(
'mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true&retrywrites=false'
)
await client.connect()
Använd db
och collection
för att skapa en databas och container.
const database = client.db('cosmicworks')
const collection = database.collection('products')
Skapa ett nytt objekt med .insertOne
const item = {
name: 'Kiama classic surfboard'
}
await collection.insertOne(item)
Kör programmet Node.js.
node app.js
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 programmet för att inaktivera TLS/SSL-validering innan du skapar klienten:
const client = new MongoClient(
...,
{ tlsAllowInvalidCertificates: true }
)
Använd Apache Cassandra .NET-drivrutinen för att ansluta till emulatorn från ett .NET-program.
Starta i en tom mapp.
Skapa ett nytt .NET-konsolprogram
dotnet new console
CassandraCSharpDriver
Lägg till paketet från NuGet.
dotnet add package CassandraCSharpDriver
Öppna filen Program.cs .
Ta bort befintligt innehåll i filen.
Lägg till ett användningsblock för Cassandra
namnområdet.
using Cassandra;
Skapa en ny instans av Cluster
med emulatorns autentiseringsuppgifter. Skapa en ny session med .Connect
var options = new SSLOptions(
sslProtocol: System.Security.Authentication.SslProtocols.Tls12,
checkCertificateRevocation: true,
remoteCertValidationCallback: (_, _, _, policyErrors) => policyErrors == System.Net.Security.SslPolicyErrors.None);
using var cluster = Cluster.Builder()
.WithCredentials(
username: "localhost",
password: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
)
.WithPort(
port: 10350
)
.AddContactPoint(
address: "localhost"
)
.WithSSL(
sslOptions: options
)
.Build();
using var session = cluster.Connect();
Skapa en ny databas och container med hjälp av PrepareAsync
och ExecuteAsync
.
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.
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);
Kör .NET-programmet.
dotnet run
Använd Apache Cassandra Python-drivrutinen för att ansluta till emulatorn från ett Python-program.
Starta i en tom mapp.
cassandra-driver
Importera paketet från Python Package Index.
pip install cassandra-driver
Skapa filen app.py .
Importera PROTOCOL_TLS_CLIENT
, SSLContext
och CERT_NONE
från modulen ssl
. Cluster
Importera sedan från modulencassandra.cluster
. PlainTextAuthProvider
Importera slutligen från modulencassandra.auth
.
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.
ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
ssl_context.check_hostname = False
ssl_context.verify_mode = CERT_NONE
Skapa en ny session
med emulatorns autentiseringsuppgifter, PlainTextAuthProvider
, Cluster
och cluster.connect()
.
auth_provider = PlainTextAuthProvider(
username="localhost",
password=(
"C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnq"
"yMsEcaGQy67XIw/Jw=="
),
)
cluster = Cluster(
["localhost"],
port="10350",
auth_provider=auth_provider,
ssl_context=ssl_context,
)
session = cluster.connect()
Skapa ett nytt nyckelområde och en ny tabell med hjälp av session.execute
.
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.
item = {"id": "68719518371", "name": "Kiama classic surfboard"}
session.execute(
"INSERT INTO cosmicworks.products (id, name) VALUES (%s, %s)",
[item["id"], item["name"]],
)
Kör Python-programmet.
python app.py
Använd Apache Cassandra-Node.js-drivrutinen för att använda emulatorn från ett Node.js/JavaScript-program.
Starta i en tom mapp.
Initiera en ny modul.
npm init es6 --yes
cassandra-driver
Installera paketet från Node Package Manager.
npm install --save cassandra-driver
Skapa filen app.js .
Client
Importera typen och auth
namnområdet från modulencassandra-driver
.
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.
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.
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.
const item = {
id: '68719518371',
name: 'Kiama classic surfboard'
}
await client.execute(
'INSERT INTO cosmicworks.products (id, name) VALUES (?, ?)',
[
item.id,
item.name
]
)
Kör programmet Node.js.
node app.js
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 klienten för att inaktivera TLS/SSL-validering:
const client = new Client({
...,
...,
...,
sslOptions: {
rejectUnauthorized: false
}
})
Viktigt!
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.
Använd Apache Gremlin .NET-drivrutinen för att ansluta till emulatorn från ett .NET-program.
Starta i en tom mapp.
Skapa ett nytt .NET-konsolprogram
dotnet new console
Gremlin.Net
Lägg till paketet från NuGet.
dotnet add package Gremlin.Net
Öppna filen Program.cs .
Ta bort befintligt innehåll i filen.
Lägg till ett användningsblock för Gremlin.Net.Driver
namnområdet.
using Gremlin.Net.Driver;
Skapa en ny instans av GremlinServer
och GremlinClient
med emulatorns autentiseringsuppgifter.
var server = new GremlinServer(
hostname: "localhost",
port: 65400,
username: "/dbs/db1/colls/coll1",
password: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
);
using var client = new GremlinClient(
gremlinServer: server,
messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
);
Rensa diagrammet med hjälp av SubmitAsync
.
await client.SubmitAsync(
requestScript: "g.V().drop()"
);
Använd SubmitAsync
igen om du vill lägga till ett nytt objekt i diagrammet med de angivna parametrarna.
await client.SubmitAsync(
requestScript: "g.addV('product').property('id', prop_id).property('name', prop_name)",
bindings: new Dictionary<string, object>
{
{ "prop_id", "68719518371" },
{ "prop_name", "Kiama classic surfboard" }
}
);
Kör .NET-programmet.
dotnet run
Använd Apache Gremlin Python-drivrutinen för att ansluta till emulatorn från ett Python-program.
Starta i en tom mapp.
gremlinpython
Importera paketet från Python Package Index.
pip install gremlinpython
Skapa filen app.py .
Importera client
från modulen gremlin_python.driver
.
from gremlin_python.driver import client
Skapa en ny Client
med emulatorns autentiseringsuppgifter.
client = client.Client(
url="ws://localhost:8901/",
traversal_source="g",
username="/dbs/db1/colls/coll1",
password=(
"C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnq"
"yMsEcaGQy67XIw/Jw=="
),
)
Rensa diagrammet med hjälp av client.submit
.
client.submit(message="g.V().drop()")
Använd client.submit
igen om du vill lägga till ett nytt objekt i diagrammet med de angivna parametrarna.
client.submit(
message=(
"g.addV('product').property('id', prop_id).property('name', prop_name)"
),
bindings={
"prop_id": "68719518371",
"prop_name": "Kiama classic surfboard",
},
)
Kör Python-programmet.
python app.py
Använd Apache Gremlin Node.js-drivrutinen för att använda emulatorn från ett Node.js/JavaScript-program.
Starta i en tom mapp.
Initiera en ny modul.
npm init es6 --yes
gremlin
Installera paketet från Node Package Manager.
npm install --save gremlin
Skapa filen app.js .
Importera modulen gremlin
.
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.
const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator(
'/dbs/db1/colls/coll1',
'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=='
)
const client = new gremlin.driver.Client(
'ws://localhost:8901/',
{
credentials,
traversalsource: 'g',
rejectUnauthorized: false,
mimeType: 'application/vnd.gremlin-v2.0+json'
}
)
client.open()
Använd submit
för att köra ett kommando på serversidan för att rensa grafen om den redan har data.
await client.submit('g.V().drop()')
Använd submit
igen om du vill lägga till ett nytt objekt i diagrammet med de angivna parametrarna.
await client.submit(
'g.addV(\'product\').property(\'id\', prop_id).property(\'name\', prop_name)', {
prop_id: '68719518371',
prop_name: 'Kiama classic surfboard'
}
)
Kör programmet Node.js.
node app.js
Använd Azure Tables SDK för .NET för att ansluta till emulatorn från ett .NET-program.
Starta i en tom mapp.
Skapa ett nytt .NET-konsolprogram
dotnet new console
Azure.Data.Tables
Lägg till paketet från NuGet.
dotnet add package Azure.Data.Tables
Öppna filen Program.cs .
Ta bort befintligt innehåll i filen.
Lägg till ett användningsblock för Azure.Data.Tables
namnområdet.
using Azure.Data.Tables;
Skapa en ny instans av TableServiceClient
med emulatorns autentiseringsuppgifter.
var serviceClient = new TableServiceClient(
connectionString: "DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;"
);
Använd GetTableClient
för att skapa en ny instans av TableClient
med tabellens namn. Kontrollera sedan att tabellen finns med hjälp av CreateIfNotExistsAsync
.
var client = serviceClient.GetTableClient(
tableName: "cosmicworksproducts"
);
await client.CreateIfNotExistsAsync();
Skapa en ny record
typ för objekt.
public record Product : Azure.Data.Tables.ITableEntity
{
public required string RowKey { get; set; }
public required string PartitionKey { get; set; }
public required string Name { get; init; }
public Azure.ETag ETag { get; set; }
public DateTimeOffset? Timestamp { get; set; }
}
Skapa ett nytt objekt i tabellen med hjälp av UpsertEntityAsync
och Replace
läget.
var item = new Product
{
RowKey = "68719518371",
PartitionKey = "Surfboards",
Name = "Kiama classic surfboard",
Timestamp = DateTimeOffset.Now
};
await client.UpsertEntityAsync(
entity: item,
mode: TableUpdateMode.Replace
);
Kör .NET-programmet.
dotnet run
Använd Azure Tables Python SDK för att ansluta till emulatorn från ett Python-program.
Starta i en tom mapp.
azure-data-tables
Importera paketet från Python Package Index.
pip install azure-data-tables
Skapa filen app.py .
Importera TableServiceClient
och UpdateMode
från modulen azure.data.tables
.
from azure.data.tables import TableServiceClient, UpdateMode
Använd TableServiceClient.from_connection_string
för att skapa en ny klient på servicenivå.
service = TableServiceClient.from_connection_string(
conn_str=(
"DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yD"
"jf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEca"
"GQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;"
)
)
Skapa en ny klient på tabellnivå med .create_table_if_not_exists
client = service.create_table_if_not_exists(table_name="cosmicworksproducts")
Använd upsert_entity
för att skapa ett nytt objekt i containern.
item = {
"PartitionKey": "68719518371",
"RowKey": "Surfboards",
"name": "Kiama classic surfboard",
}
client.upsert_entity(entity=item, mode=UpdateMode.REPLACE)
Kör Python-programmet.
python app.py
Använd Azure Tables JavaScript SDK för att använda emulatorn från ett Node.js/JavaScript-program.
Starta i en tom mapp.
Initiera en ny modul.
npm init es6 --yes
@azure/data-tables
Installera paketet från Node Package Manager.
npm install --save @azure/data-tables
Skapa filen app.js .
TableClient
Importera typen från modulen@azure/data-tables
.
import { TableClient } from '@azure/data-tables'
Använd TableClient.fromConnectionString
för att skapa en ny klientinstans med emulatorns anslutningssträng.
const client = TableClient.fromConnectionString(
'DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;',
'cosmicworksproducts'
)
Använd createTable
för att skapa en ny tabell om den inte redan finns.
await client.createTable()
Använd upsertEntity
för att skapa eller ersätta objektet.
const item = {
partitionKey: '68719518371',
rowKey: 'Surfboards',
name: 'Kiama classic surfboard'
}
await client.upsertEntity(
item,
'Replace'
)
Kör programmet Node.js.
node app.js
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 klienten för att inaktivera TLS/SSL-validering:
const client = TableClient.fromConnectionString(
...,
...,
{
allowInsecureConnection: true
}
)
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.
Kör en testsvit med den inbyggda testdrivrutinen för .NET och ett testramverk som MSTest, NUnit eller XUnit.
Kontrollera att enhetstestpaketet för ditt program fungerar som förväntat.
dotnet test
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.
name: Continuous Integration
on:
push:
branches:
- main
jobs:
unit_tests:
name: Run .NET unit tests
runs-on: windows-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v3
- name: Start Azure Cosmos DB emulator
run: |
Write-Host "Launching Cosmos DB Emulator"
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
Start-CosmosDbEmulator
- name: Run .NET tests
run: dotnet test
Kommentar
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.
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.
name: Continuous Integration
on:
push:
branches:
- main
jobs:
unit_tests:
name: Run Python unit tests
runs-on: windows-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v3
- name: Start Azure Cosmos DB emulator
run: |
Write-Host "Launching Cosmos DB Emulator"
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
Start-CosmosDbEmulator
- name: Install test runner
run: pip install pytest
- name: Run Python tests
run: pytest
Kommentar
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.
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.
name: Continuous Integration
on:
push:
branches:
- main
jobs:
unit_tests:
name: Run Node.js unit tests
runs-on: windows-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v3
- name: Start Azure Cosmos DB emulator
run: |
Write-Host "Launching Cosmos DB Emulator"
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
Start-CosmosDbEmulator
- name: Install test runner
run: npm install --global mocha
- name: Run Node.js tests
run: mocha
Kommentar
Starta emulatorn från kommandoraden med hjälp av olika argument eller PowerShell-kommandon. Mer information finns i kommandoradsargument för emulatorn.
Gå vidare