BEACHSIDE BLOG

MicrosoftとかC#を好むレンジャーの個人メモ

Azure Cosmos DB Emulator を使ってみた(2019年2月編)

ローカル環境だけで開発が進めれるよう 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 DB Emulator を使用したローカルでの開発 | Microsoft Docs

インストールが終わったら起動してみましょう。 スタートメニューから「Azure Cosmos DB Emulator」をクリックして起動します。アイコンかわいいなこれ...。

f:id:beachside:20190207114424p:plain

起動すると、ブラウザーで Data Exporer(https://localhost:8081/_explorer/index.html)が開かれます。 これで Emulator への接続文字列や、DBの中身を見たりいじったりできます。
サンプルコードのダウンロードリンクやドキュメントリンクもついている。素晴らしいですねー。

(サンプルコードで使ってるSDK古い現行バージョンなので、もはや見たくないもないコードですが。)

f:id:beachside:20190207114439p:plain

ブラウザーを閉じてしまったりして Data Exporer の URL なんだっけ?って迷子になったら、WIndows のタスクバーから Emulator のアイコンを右クリックして「Open Data Explorer」を開けばよいです。

f:id:beachside:20190207114624p:plain

やっぱりアイコンかわいい...


サイドバーのExplorer から、Container の中のデータの確認や編集、Throughput の設定などもできます。ローカルで Throughput の設定とは...感はありますが、SDK で設定した内容が確認できます。上限超えたら死ぬのかな....試してないです。

f:id:beachside:20190219114403p:plain


Console App から接続を試す

接続するための情報は、アイコンがかわいいで話題の Data Explorer の Quickstart メニュー内に書いています。みんな一緒のキーのようですね。

最近、Cosmos DB のRepository 用に作ったコンソールアプリでサクッと動作確認してみましたが、問題なく動作します(そりゃそーだ)。

github.com

全くの余談ですが、この 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 になってるので、そのうち使えるようになりそうですね。

under review
How can we improve Azure Cosmos DB?
  • 1154 votes
  • 39 comments

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.

feedback.azure.com

実はDocker 版 Emulator on Mac を書くためにブログを書き始めたのですが撃沈。わざわざ Windows では Docker の Emulator 使う気がないので Docker 編書くのをやめました。公式ドキュメントに使い方は書いてあるので、この通りにやればできるのでしょう。

https://docs.microsoft.com/ja-jp/azure/cosmos-db/local-emulator#running-on-docker

おしまい。