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?
  • 1116 votes
  • 38 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

おしまい。

Azure DevOps の Wiki で使える 絵文字 チートシートとマークダウンのシンタックスガイド

いつも探すのに数秒手間取るのがイラっとするので、リンクのメモです。
(手間取るならブックマークでもつけておけよ感ありますが....)

続きを読む

Azure DevOps : master ブランチだけは削除できないように権限設定

Azure DevOps の Repos で、

  • master は削除できない
  • master ブランチ以外は削除できる(Pull Request の Complete の時とか)

という権限設定をするときのメモです。 PR を merge するときにブランチ消したいので削除権限は必要だけど master だけは削除できないようにしたいシナリオで、プロダクトの Reposigory には必ず設定しておきたいやつです。

悪意を持って mastar ブランチ消すチームメンバーはいないと信じたいですが、オペミスがないとは言えないので消えないようにしておきたいですよね。

続きを読む

Azure Functions プロキシ のレスポンスのオーバーライド( responseOverrides )で Json を返す

Azure Functions Proxies の機能のひとつに、リクエストを backend の url に送信せず、定義しておいたレスポンスを直接返すことができます。backend が用意できてないけどクライアント側の都合でどうしても通信したいときにサクッと使えます。

公式ドキュメントはいい感じにまとまっていますが、個人的によく使う JsonJson の Array を返すサンプルがないのでメモしておきました。

続きを読む

Release Pipeline 作成時 Azure Subscription の 認 証 エラー 時の解決方法 ( Azure DevOps )

Azure DevOps で Release のパイプラインを作成する際、サブスクリプションを選択して Authorize する必要がありますが、認証できないトラブルに遭遇している方をちょいちょい見かけます。

「error insufficient privileges to complete the operation」というエラーが多いかと。

f:id:beachside:20190117215749p:plain

解決策として、2つの方針があると思っています。

  • 権限ある人に Service connection を作ってもらう
  • 自分で作れるように権限を付与してもらう
続きを読む