Cosmos DB Emulatorのインストールとセットアップ
続いて、Cosmos DB Emulatorを使用できるようにしていきます。
インストール
Cosmos DB Emulatorのインストーラーは、Cosmos DB Emulatorの紹介ページから入手できます。
バイナリ版とDocker版の2種類から選ぶことができますが、今回はバイナリ版からインストールします。
ページの冒頭にある[Download MSI]のリンクをクリックすると、インストーラーのダウンロードが始まります。
ダウンロードしたインストーラーにしたがって、Emulatorをインストールします。
インストールが完了すると、ブラウザが起動してEmulatorのクライアント画面が表示されます。表示されない場合は、ブラウザを起動してhttps://localhost:8081/_explorer/index.htmlにアクセスしてください。
画面左側に[Quickstart]と[Explorer]というメニューが表示されています。それぞれ、以下のことができます。
- Quickstart:各言語(.NET, Java, Node.js, Python)向けのテンプレートがダウンロードできる画面
- Explorer:Cosmos DB Emulatorに作成したデータベース・コレクション・ドキュメントを確認できる画面
今回はアプリを一から作っていくためQuickstartは使用せず、Explorerだけを使用します。
認証キーの取得
アプリからCosmos DBにアクセスするために必要な認証キーを作成します。コマンドプロンプトからリスト1のコマンドを実行することで、ファイルに認証キーが出力されます。
> cd C:\Program Files\Azure Cosmos DB Emulator > CosmosDB.Emulator.exe /GenKeyFile=<保存先ファイル名>
認証キーを作成したら一度Emulatorを停止し、認証キーファイルを指定して再度Emulatorを起動します。これにより、ファイル内に記載されている認証キーを使って、アプリケーションからCosmos DBにアクセスすることができるようになります。
> cd C:\Program Files\Azure Cosmos DB Emulator > CosmosDB.Emulator.exe /Shutdown > CosmosDB.Emulator.exe /KeyFile="<認証キーファイルのフルパス>"
以上でEmulatorの準備は完了です。
プロジェクトの作成
それでは、ここからは実際にDocumentDB APIを使ってCosmos DBを操作してみましょう。
Visual StudioといったIDEのプロジェクトの新規作成メニューから、[Console Application]を選択してプロジェクトを作成します。プロジェクト名は「TodoApplication」とします。
必要なライブラリの追加
プロジェクトを作成したら、ライブラリを追加していきます。NuGetを使って「DocumentDB Client Library」と「JSON」のパッケージをインストールします。DocumentDB APIのドキュメントの形式はJSONのため、オブジェクトの変換に「JSON」を利用します。
PM> Install-Package Microsoft.Azure.DocumentDB PM> Install-Package Newtonsoft.Json
接続情報の設定
次に、Cosmos DBの接続情報を「App.config」に追加していきます。「authKey」の値には、先ほど作成した認証キーを設定してください。
<appSettings> <add key="endpointUrl" value="https://localhost:8081/" /> <add key="authKey" value="認証キー" /> <add key="databaseId" value="DemoDb" /> <add key="collectionId" value="TodoCollection" /> </appSettings>
プロジェクトに、新しく「DocumentRepository.cs」というクラスを作成します。このクラスにCosmos DBへのデータアクセス機能を集約します。
まずは「App.config」に設定した接続情報を読み込み、Cosmos DBとやり取りを行うクライアントオブジェクトを生成しましょう。
public class DocumentRepository { // Cosmos DBのURL private static readonly string EndpointUrl = ConfigurationManager.AppSettings["endpointUrl"]; // Cosmos DBの認証キー private static readonly string AuthKey = ConfigurationManager.AppSettings["authKey"]; // データベース名 private static readonly string DatabaseId = ConfigurationManager.AppSettings["databaseId"]; // コレクション名 private static readonly string CollectionId = ConfigurationManager.AppSettings["collectionId"]; // DocumentDB APIのクライアントオブジェクト private static DocumentClient client; public static void Initialize() { // DocumentDB APIクライアントのインスタンスを生成 client = new DocumentClient(new Uri(EndpointUrl), AuthKey); } ・・・