Visual Studio の接続済みサービスを使用して Azure Cosmos DB をアプリに追加する
Visual Studio では、接続済みサービス機能を使用して、次のいずれかを Azure Cosmos DB に接続できます。
- .NET Framework コンソール アプリ
- ASP.NET モデル ビュー コントローラー (MVC) (.NET フレームワーク)
- ASP.NET Core
- .NET Core (コンソール アプリ、WPF、Windows フォーム、クラス ライブラリを含む)
- .NET Core Worker ロール
- Azure Functions
- ユニバーサル Windows プラットフォーム アプリ
- Xamarin
- Cordova
接続済みサービス機能により、必要なすべての参照と接続コードがプロジェクトに追加され、構成ファイルが適切に変更されます。
前提条件
- Azure ワークロードがインストールされている Visual Studio
- サポートされている種類のうち 1 つのプロジェクト
- Azure アカウント。 Azure アカウントがない場合は、Visual Studio サブスクライバー向けの Azure の特典を有効にするか、無料試用版にサインアップします。
接続済みサービスを使用して Azure Cosmos DB に接続する
Visual Studio でプロジェクトを開きます。
ソリューション エクスプローラーで [接続済みサービス] ノードを右クリックし、コンテキスト メニューの [接続済みサービスの追加] を選択します。
[接続済みサービス] ノードが表示されない場合は、[プロジェクト]>[接続済みサービス]>[追加] の順に選択します。
[接続済みサービス] タブで、 [サービスの依存関係] の [+] アイコンを選択します。
[依存関係の追加] ページで、 [Azure Cosmos DB] を選択します。
まだサインインしていない場合は、Azure アカウントにサインインします。 Azure アカウントを持っていない場合、無料試用版でサインアップできます。
[Azure Cosmos DB] 画面で、既存の Azure Cosmos DB を選択し、 [次へ] を選択します。
データベースを作成する必要がある場合は、次の手順に進みます。 それ以外の場合は、手順 7 に進みます。
Azure Cosmos DB を作成するには:
画面の下部にある [新しい Azure Cosmos DB の作成] を選択します。
[Azure Cosmos DB: 新規作成] 画面に入力し、 [作成] を選択します。
[Azure Cosmos DB の構成] ダイアログが表示されると、新しいデータベースが一覧に表示されます。 一覧で新しいデータベースを選択し、 [次へ] を選択します。
接続文字列名を入力し、接続文字列をローカル シークレット ファイルと Azure Key Vault のどちらに保存するかを選択します。
[変更の概要] 画面には、プロセスを完了した場合にプロジェクトに対して行われるすべての変更が表示されます。 変更が問題ない場合は、 [完了] を選択します。
接続は、 [接続済みサービス] タブの [サービスの依存関係] セクションに表示されます。
Note
.NET Framework プロジェクトの場合、接続済みサービス UI は多少異なります。 違いを確認するには、このページの Visual Studio 2019 バージョンと比較してください。
Visual Studio でプロジェクトを開きます。
ソリューション エクスプローラーで [接続済みサービス] ノードを右クリックし、コンテキスト メニューの [追加] を選んで使用できるサービスのメニューを開きます。
[接続済みサービス] ノードが表示されない場合は、[プロジェクト]>[接続済みサービス]>[追加] の順に選択します。
[Azure Cosmos DB] を選びます。 [依存関係に接続する] ページが表示されます。 2 つのオプションが表示されます。1 つはローカル エミュレーター (コンテナー上の Azure CosmosDB エミュレーター (ローカル)) 用であり、もう 1 つはライブ Azure Cosmos DB サービスに接続するためのものです。 ローカル エミュレーターから始めることで、コストを削減し、早期開発を簡単にできます。 後でこれらの手順を繰り返して他のオプションを選ぶことで、ライブ サービスに移行できます。
Azure Cosmos DB エミュレーターを使う場合は、[次へ] をクリックして [変更の概要] 画面を表示します。そこで、プロジェクトの変更方法が示されます。 NuGet パッケージの参照と、ローカル エミュレーターの接続コードが、プロジェクトに追加されます。 最後の画面で [完了] をクリックすると、エミュレーターのコンテナーが作成されます。出力ウィンドウにイメージのダウンロードの状態が表示されます。
Azure サービスに接続する場合は、次のステップに進みます。まだサインインしていない場合は、続行する前に Azure アカウントにサインインします。 Azure アカウントを持っていない場合、無料試用版でサインアップできます。
[Azure Cosmos DB] 画面で、既存の Azure Cosmos DB を選択し、 [次へ] を選択します。
データベースを作成する必要がある場合は、次の手順に進みます。 それ以外の場合は、手順 7 に進みます。
Azure Cosmos DB を作成するには:
画面の下部にある [新しい Azure Cosmos DB の作成] を選択します。
[Azure Cosmos DB: 新規作成] 画面に入力し、 [作成] を選択します。
[Azure Cosmos DB の構成] ダイアログが表示されると、新しいデータベースが一覧に表示されます。 一覧で新しいデータベースを選択し、 [次へ] を選択します。
接続文字列名を入力し、接続文字列をローカル シークレット ファイルと Azure Key Vault のどちらに保存するかを選択します。
接続文字列はシークレットとして追加され、アプリ構成で使用できるようになります。 ASP.NET Core アプリでは、
WebApplicationBuild
オブジェクトのConfiguration
プロパティを使用して、この接続文字列にアクセスできます。[変更の概要] 画面には、プロセスを完了した場合にプロジェクトに対して行われるすべての変更が表示されます。 変更が問題ない場合は、 [完了] を選択します。
ソリューション エクスプローラーで、[接続済みサービス] ノードをダブルクリックして [接続済みサービス] タブを開きます。[サービスの依存関係] セクションに接続が表示されます。
追加した依存関係の横にある 3 つのドットをクリックすると、ウィザードをもう一度開いて接続を変更するための [接続] など、さまざまなオプションが表示されます。 また、ウィンドウの右上にある 3 つのドットをクリックして、ローカルの依存関係の開始や、設定の変更などのオプションを表示することもできます。
デフォルトではコンテナ内のメモリ制限は 2G に設定されていますが、通常、Azure Cosmos DB の実行にはより多くのメモリが必要です。 これを解決するには、ソリューション フォルダーの下の
.vs/sd/<GUID>/local
フォルダーに移動します。 エクスプローラーでは、.vs
フォルダーを表示するために非表示のファイルを有効にする必要がある場合があります。 ファイル cosmosdb1.docker-compose.yml を見つけて開きます。 4G 以上のメモリ制限を設定します。mem_limit = 4G
新しい設定でコンテナーを再起動するには、[接続済みサービス] タブの [サービスの依存関係] セクションで 3 つのドットをクリックし、[ローカルの依存関係を開始する] を選択します。
Note
Azure Cosmos DB 用のローカル エミュレーターでは、Azure Cosmos DB の一時的なライセンスを使用するベース イメージを参照する場合があります。 コンテナが起動しない場合は、Azure Cosmos DB コンテナのコンテナ* ウィンドウの [ログ] タブを確認します。 PAL の有効期限に関する問題が示されている場合は、ローカル コンテナーの最新の基本イメージを取得する必要があります。 コンソールのプロンプトから次のコマンドを実行します: docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
。 ライセンスは定期的に更新され、有効期限が切れると、最新のコンテナーに更新することで問題が解決されます。 Azure Cosmos DB エミュレーター GitHub リポジトリから Azure Cosmos DB エミュレーターの問題を表示および報告できます。
次のステップ
「ASP.NET Core での開発におけるアプリ シークレットの安全な保存」に従って、シークレットを安全に格納する方法を理解してください。 特に、シークレット ストアから接続文字列を読み取るには、「Configuration API を使用してシークレットを読み取る」のようにコードを追加できます。 コードは次のようになります。ここで、builder
は、ASP.NET Core プロジェクト テンプレート内の Program.cs に示される WebApplicationBuild
のインスタンスです。
// New instance of CosmosClient class using a connection string
using CosmosClient client = new(
connectionString: builder.Configuration["CosmosDBConnectionString"]
);
CosmosClient
では、さまざまな方法で Azure Cosmos DB の機能にアクセスできます。 CosmosClient
のインスタンスを作成したら、「.NET を使用して Azure Cosmos DB for NoSQL にデータベースを作成する」に従って NoSQL データベースを作成できます。