準備
Azure Cosmos DB for NoSQL コンテナーにデータをインポートしてクエリを実行する .NET アプリケーションを構築します。 ここでは、プロジェクトの全体的な目標と、インポートとクエリの機能を実装する方法について説明します。 さらに、必要な API for NoSQL アカウントを設定する方法について説明します。
プロジェクトの概要
このプロジェクトの目標は、API for NoSQL コンテナーに項目をアップロードしてクエリを実行する .NET コンソール アプリケーションを構築して検証することです。 この .NET アプリケーションでは、Azure Cosmos DB for NoSQL 用の .NET SDK を使って、Azure 内のサービス インスタンスとやり取りします。 プロジェクト コードでは、トランザクション バッチを使って、複数の関連項目を同時に作成します。 また、プロジェクト コードでは、文字列として表されたクエリを使って、項目が正常にアップロードされたことを検証します。
次のフローチャートは、アプリで実行する必要があるビジネス ロジックを示したものです。
実行する必要がある主なタスクは次のとおりです。
- Azure Cosmos DB アカウントを作成し、認証を構成します。
- .NET コンソール アプリケーションを設定し、Azure SDK for .NET (
Microsoft.Azure.Cosmos
) へのパッケージ参照を追加します。 - データベースとコンテナーのリソースを作成します。
- 単純な操作として 1 つの項目を追加します。
- トランザクショナル バッチを使用して 4 つの項目を作成します。
- クエリを実行し、その結果を観察します。
セットアップ
このプロジェクトを完了するには、API for NoSQL アカウントが必要です。
Azure Cosmos DB for NoSQL アカウントを作成する
API for NoSQL アカウントを使って、このプロジェクトで作成するデータを格納し、クエリを実行します。 このセクションでは、Azure Cloud Shell ターミナルで直接 Azure CLI を使って新しいアカウントを作成する手順について説明します。
[sandbox resource group name] リソース グループ内に、一意のサフィックスを使って、NoSQL 用 API の新しいアカウントを作成します。az cosmosdb create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name "mslearn-nosql-$((RANDOM*RANDOM))"
重要
このリソース グループは、サンドボックスによって既に作成されています。
新しいアカウントが作成されたら、コマンドが完了するまで待ちます。 新しいアカウントの作成には、数分かかることがあります。
ヒント
Azure portal を使用して、NoSQL 用 API の新しいアカウントに移動することができます。
エンドポイントに対して Microsoft Entra 認証を有効にする
これで NoSQL 用 API アカウントを入手したので、Azure CLI からコマンドの az cosmosdb
グループを使用して、そのアカウントの情報を取得することができます。 このセクションでは、アカウントに対して Microsoft Entra 認証を有効にして、そのエンドポイントを取得します。
まず、最近作成された、
az cosmosdb list
使用した NoSQL 用 API アカウントの名前を取得します。 次の手順で必要になるため、名前を記録します。az cosmosdb list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --query sort_by([].{name:name,created:systemData.createdAt}, &created)[0].name"
ここで、
az cosmosdb show
を使用して、作成したアカウントのdocumentEndpoint
を取得します。 前の手順で記録したアカウント名の値を使用します。 .NET SDK からの接続にも使用するため、このエンドポイントを記録します。az cosmosdb show \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name "<nosql-account-name>" \ --query "documentEndpoint"
次に、
az cosmosdb sql role definition show
を使用して、ご自分のアカウントの組み込みの Cosmos DB 組み込みデータ共同作成者 データ プレーン ロールの完全修飾一意識別子を取得します。 次の手順で使用するため、この値を記録します。az cosmosdb sql role definition show \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name "<nosql-account-name>" \ --id "00000000-0000-0000-0000-000000000002" \ --query "id"
次に、
az ad signed-in-user show
を使用して、現在ログインしているアカウントの識別子を取得します。 次の手順で使用するため、この値を記録します。az ad signed-in-user show \ --query "id"
最後に、
az cosmosdb sql role assignment create
を使用して、現在ログインしているアカウントにロールを割り当てます。 ロールの定義識別子、プリンシパル識別子、およびこのセクションで前に記録したアカウント名を使用します。az cosmosdb sql role assignment create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name "<nosql-account-name>" \ --role-definition-id "<fully-qualified-role-definition-id>" --principal-id "<principal-id>" --scope "/"
データベースとコンテナー リソースを作成する
Microsoft Entra 認証は、項目 (またはデータ プレーン) に対してのみ構成されます。 Azure CLI を使用して、データベースおよびコンテナー リソースを手動で作成する必要があります。 これらのコマンドには、前のセクションで記録したアカウント名を使用します。
az cosmosdb sql database create
を使用してデータベースを作成します。az cosmosdb sql database create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --account-name "<nosql-account-name>" \ --name "cosmicworks"
次に、
az cosmosdb sql container create
を使用してコンテナーを作成します。az cosmosdb sql container create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --account-name "<nosql-account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/categoryId"
開発環境の設定
開発コンテナー環境は、このプロジェクトのすべての演習を完了するために必要なすべての依存関係で使用できます。 開発コンテナーは、GitHub Codespaces で実行することも、Visual Studio Code をローカルで使用して実行することもできます。
GitHub Codespaces では、Web 用 Visual Studio Code をブラウザーベースのユーザー インターフェイスとして使用し、GitHub によって管理される開発コンテナーを実行します。 正しい開発者ツールと、このトレーニング モジュールを完了するために事前インストールされた依存関係を持つ最も簡単な開発環境として、GitHub Codespaces を使用します。
重要
すべての GitHub アカウントでは、2 つのコア インスタンスで毎月最大 60 時間無料で Codespaces を使用できます。
azure-samples/cosmos-db-dotnet
テンプレートを使用して、新しい GitHub codespace を作成します。[codespace の作成] ページ上で、codespace の構成設定を確認し、それから [新しい Codespace の作成] を選択します。
Codespace が起動するまで待ちます。 この起動プロセスには数分かかることがあります。
codespace で新しいターミナルを開きます。
.NET 8 が環境にインストールされていることを確認します。
dotnet --list-sdks
ターミナルを閉じます。
このプロジェクトの残りの演習は、この開発コンテナーのコンテキストで行われます。