Knowledge Center

Test DynamoDB, Firestore and Cosmos DB locally — with their native SDKs

Local NoSQL testing usually means a different tool per cloud. Here's how to run DynamoDB, Firestore and Cosmos DB locally and hit each with its real SDK — no cloud account, no per-cloud emulator zoo.

2026-06-26 · 6 min read

NoSQL is where "test locally" gets fragmented: DynamoDB Local for AWS, the Firestore emulator for GCP, the Cosmos DB emulator for Azure — three installs, three lifecycles, three ways to wire into CI. If your app touches more than one of them, that's a lot of moving parts. Vyomi runs all three behind one endpoint, and each responds to its native SDK.

DynamoDB (boto3)

import boto3
ddb = boto3.client("dynamodb", endpoint_url="http://localhost:9000",
                   aws_access_key_id="test", aws_secret_access_key="test",
                   region_name="us-east-1")
ddb.create_table(TableName="users",
    KeySchema=[{"AttributeName": "id", "KeyType": "HASH"}],
    AttributeDefinitions=[{"AttributeName": "id", "AttributeType": "S"}],
    BillingMode="PAY_PER_REQUEST")
ddb.put_item(TableName="users", Item={"id": {"S": "u1"}, "name": {"S": "Ada"}})

Firestore (google-cloud-firestore)

from google.cloud import firestore
db = firestore.Client(project="local",
        client_options={"api_endpoint": "http://localhost:9000"})
db.collection("users").document("u1").set({"name": "Ada"})
print(db.collection("users").document("u1").get().to_dict())

Cosmos DB (azure-cosmos)

from azure.cosmos import CosmosClient
client = CosmosClient("http://localhost:9000", credential="test")
db = client.create_database_if_not_exists("app")
container = db.create_container_if_not_exists(id="users", partition_key="/id")
container.upsert_item({"id": "u1", "name": "Ada"})

Why native SDKs matter

The point isn't just that it runs — it's that you write the same code you'll ship. No vendor-neutral wrapper, no mock client. If boto3, google-cloud-firestore and azure-cosmos work unchanged against your local environment, you've proven the integration, not a stand-in for it. (That's the native-SDK conformance principle Vyomi is built around.)

One environment, one CI service

Because it's one appliance, a cross-cloud test — write a user to DynamoDB, mirror it to Firestore, read it from Cosmos — runs locally and offline. See testing cloud apps offline for the CI wiring.

Try Vyomi free in 60 seconds.

One command. Three clouds. No credit card.