ローカル環境だけで開発が進めれるよう Azure Cosmos DB Emulator があります。
接続文字列は固定なので、ASP.NET Core で使うなら appsettings.Development.json とかに直接接続文字列書いたりも許容範囲化と思いますし、便利に使えそうだと思っています。
ということで、ここ数年使ってなかったし気づけば新しくなってた Azure Cosmos DB Emulator を調べた際のメモを残します。
Azure Cosmos DB Emulatorの種類
2種類あります。
- バイナリ(インストールしてローカルで利用)
- Docker
Emulator なので Azure 上での動作の違いはあります。Emulator では複数リージョンのレプリケーションをシミュレーションできない(そりゃそうだろ)とかですが、サクッと開発したり動作確認ようには問題ないと思っています。
機能や制約は、公式ドキュメントを確認しておくとよいです。
バイナリの Emulator を使ってみる
以下の公式ドキュメントからインストーラー(MSI)をダウンロードしてインストールするだけで利用可能です。
Azure Cosmos Emulator を使用してローカルで開発する | Microsoft Docs
インストールが終わったら起動してみましょう。 スタートメニューから「Azure Cosmos DB Emulator」をクリックして起動します。アイコンかわいいなこれ...。
起動すると、ブラウザーで Data Exporer(https://localhost:8081/_explorer/index.html)が開かれます。
これで Emulator への接続文字列や、DBの中身を見たりいじったりできます。
サンプルコードのダウンロードリンクやドキュメントリンクもついている。素晴らしいですねー。
(サンプルコードで使ってるSDKが古い現行バージョンなので、もはや見たくないもないコードですが。)
ブラウザーを閉じてしまったりして Data Exporer の URL なんだっけ?って迷子になったら、WIndows のタスクバーから Emulator のアイコンを右クリックして「Open Data Explorer」を開けばよいです。
やっぱりアイコンかわいい...
サイドバーのExplorer から、Container の中のデータの確認や編集、Throughput の設定などもできます。ローカルで Throughput の設定とは...感はありますが、SDK で設定した内容が確認できます。上限超えたら死ぬのかな....試してないです。
Console App から接続を試す
接続するための情報は、アイコンがかわいいで話題の Data Explorer の Quickstart メニュー内に書いています。みんな一緒のキーのようですね。
最近、Cosmos DB のRepository 用に作ったコンソールアプリでサクッと動作確認してみましたが、問題なく動作します(そりゃそーだ)。
全くの余談ですが、この Console App は GenericHost の検証と Cosmos の 新しい SDK: azure-cosmos-dotnet-v3 の検証用に作ってるやつです。
そのあたりは先月書こうと思ってまだ下書きしか書いてないですが、そのうちブログに公開できればと思っています。
ASP.NET Core とかコンソールのアプリで、Azure 上の Cosmos へ接続するなら appsettings.json に接続文字列を書くことはまずないですが、Emulator ならローカルでしかつながらないので appsettings.Development.json に接続文字列をかいてもいい気がしてます。
Docker の Emulator を使ってみるみようとしたけどやめた
「ふむふむ MacOS なら Docker でどうにかなるわけねー」と思ったら、MacOS はまだ使えないようです。Mac でサンプルのソースを git pull したりEmulator を docker pull してから気づきました。。。ドキュメントを多少読んでから手を動かすべきだったか...
UserVoice では Under Review になってるので、そのうち使えるようになりそうですね。
Add DocumentDB Emulator support for Mac OS X and *nix
The DocumentDB Emulator currently only supports Windows 10.
It would be great if support for Mac OS X could be added or documentation to run it on other platforms.
実はDocker 版 Emulator on Mac を書くためにブログを書き始めたのですが撃沈。わざわざ Windows では Docker の Emulator 使う気がないので Docker 編書くのをやめました。公式ドキュメントに使い方は書いてあるので、この通りにやればできるのでしょう。
https://docs.microsoft.com/ja-jp/azure/cosmos-db/local-emulator#running-on-docker
おしまい。