クイック スタート:既存の MongoDB Node.js Web アプリを Azure Cosmos DB に移行するQuickstart: Migrate an existing MongoDB Node.js web app to Azure Cosmos DB

このクイックスタートでは、Azure Cloud Shell と、GitHub からクローンした MEAN (MongoDB、Express、Angular、Node.js) アプリを使用して、Azure Cosmos DB for Mongo DB API アカウントを作成、管理します。In this quickstart, you create and manage an Azure Cosmos DB for Mongo DB API account by using the Azure Cloud Shell, and with a MEAN (MongoDB, Express, Angular, and Node.js) app cloned from GitHub. Azure Cosmos DB は、マルチモデル データベース サービスです。グローバルな分散と水平方向のスケーリング機能を備えたドキュメント データベースやテーブル データベース、キーと値のデータベース、グラフ データベースをすばやく作成し、クエリを実行することができます。Azure Cosmos DB is a multi-model database service that lets you quickly create and query document, table, key-value, and graph databases with global distribution and horizontal scale capabilities.

前提条件Prerequisites

  • アクティブなサブスクリプションが含まれる Azure アカウント。An Azure account with an active subscription. 無料で作成できますCreate one for free. または、Azure サブスクリプションなしで、Azure Cosmos DB を無料で試すこともできます。Or try Azure Cosmos DB for free without an Azure subscription. Azure Cosmos DB Emulator を使用することもできます。接続文字列には、.mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true を使用してください。You can also use the Azure Cosmos DB Emulator with the connection string .mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true.
  • Node.js とその実用的な知識。Node.js, and a working knowledge of Node.js.
  • Git.Git.
  • Azure CLI 2.0 以上 (Azure Cloud Shell を使用したくない場合)。If you don't want to use Azure Cloud Shell, Azure CLI 2.0+.

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。You can use either Bash or PowerShell with Cloud Shell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を開始するには:To start Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [使ってみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. 新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を開始します。Start Cloud Shell.

  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Enter キーを選択して、コードを実行します。Select Enter to run the code.

サンプル アプリケーションの複製Clone the sample application

次のコマンドを実行して、サンプル リポジトリを複製します。Run the following commands to clone the sample repository. このサンプル レポジトリには、既定の MEAN.js アプリケーションが含まれています。This sample repository contains the default MEAN.js application.

  1. コマンド プロンプトを開いて git-samples という名前の新しいフォルダーを作成し、コマンド プロンプトを閉じます。Open a command prompt, create a new folder named git-samples, then close the command prompt.

    mkdir "C:\git-samples"
    
  2. git bash などの git ターミナル ウィンドウを開いて、cd コマンドを使用して、サンプル アプリをインストールする新しいフォルダーに変更します。Open a git terminal window, such as git bash, and use the cd command to change to the new folder to install the sample app.

    cd "C:\git-samples"
    
  3. 次のコマンドを実行して、サンプル レポジトリを複製します。Run the following command to clone the sample repository. このコマンドは、コンピューター上にサンプル アプリのコピーを作成します。This command creates a copy of the sample app on your computer.

    git clone https://github.com/prashanthmadi/mean
    

アプリケーションの実行Run the application

Node.js で記述されたこの MongoDB アプリは、Azure Cosmos DB データベースに接続します。Azure Cosmos DB データベースは、MongoDB クライアントをサポートします。This MongoDB app written in Node.js connects to your Azure Cosmos DB database, which supports MongoDB client. 言い換えると、Azure Cosmos DB データベースへのデータの格納は、アプリケーションでは意識されません。In other words, it is transparent to the application that the data is stored in an Azure Cosmos DB database.

必要なパッケージをインストールし、アプリケーションを起動します。Install the required packages and start the application.

cd mean
npm install
npm start

アプリケーションは、MongoDB ソースに接続しようとして失敗しますが、そのまま続けてください。出力結果から "[MongoError: connect ECONNREFUSED 127.0.0.1:27017]" が返されたらアプリケーションを終了します。The application will try to connect to a MongoDB source and fail, go ahead and exit the application when the output returns "[MongoError: connect ECONNREFUSED 127.0.0.1:27017]".

Azure へのサインインSign in to Azure

CLI をローカルにインストールして使用する場合、このトピックでは、Azure CLI バージョン 2.0 以降を実行していることが要件です。If you choose to install and use the CLI locally, this topic requires that you are running the Azure CLI version 2.0 or later. バージョンを確認するには、az --version を実行します。Run az --version to find the version. インストールまたはアップグレードする必要がある場合は、[Install Azure CLI] のインストールに関するページを参照してください。If you need to install or upgrade, see [Install Azure CLI].

インストールされた Azure CLI を使用する場合は、az login コマンドで Azure サブスクリプションにサインインし、画面上の指示に従います。If you are using an installed Azure CLI, sign in to your Azure subscription with the az login command and follow the on-screen directions. Azure Cloud Shell を使用する場合は、この手順を省略できます。You can skip this step if you're using the Azure Cloud Shell.

az login 

Azure Cosmos DB モジュールを追加するAdd the Azure Cosmos DB module

インストールされた Azure CLI を使用する場合は、az コマンドを実行して、cosmosdb コンポーネントが既にインストールされているかどうかを調べます。If you are using an installed Azure CLI, check to see if the cosmosdb component is already installed by running the az command. cosmosdb が基本コマンドの一覧にある場合は、次のコマンドに進みます。If cosmosdb is in the list of base commands, proceed to the next command. Azure Cloud Shell を使用する場合は、この手順を省略できます。You can skip this step if you're using the Azure Cloud Shell.

cosmosdb が基本コマンドの一覧にない場合は、Azure CLI を再インストールします。If cosmosdb is not in the list of base commands, reinstall Azure CLI.

リソース グループを作成するCreate a resource group

az group createリソース グループを作成します。Create a resource group with the az group create. Azure リソース グループとは、Web アプリ、データベース、ストレージ アカウントなどの Azure リソースのデプロイと管理に使用する論理コンテナーです。An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed.

次の例は、西ヨーロッパ リージョンにリソース グループを作成します。The following example creates a resource group in the West Europe region. リソース グループには一意の名前を選択します。Choose a unique name for the resource group.

Azure Cloud Shell を使用する場合は、 [試してみる] を選択し、画面のプロンプトに従ってログインしてから、コマンドをコマンド プロンプトにコピーします。If you are using Azure Cloud Shell, select Try It, follow the onscreen prompts to login, then copy the command into the command prompt.

az group create --name myResourceGroup --location "West Europe"

Azure Cosmos DB アカウントを作成するCreate an Azure Cosmos DB account

az cosmosdb create コマンドを使用して、Cosmos アカウントを作成します。Create a Cosmos account with the az cosmosdb create command.

次のコマンドの <cosmosdb-name> プレースホルダーを独自の一意の Cosmos アカウント名に置き換えます。In the following command, please substitute your own unique Cosmos account name where you see the <cosmosdb-name> placeholder. この一意の名前は、Cosmos DB エンドポイント (https://<cosmosdb-name>.documents.azure.com/) の一部として使用されます。そのため、この名前は Azure 内のすべての Cosmos アカウントで一意である必要があります。This unique name will be used as part of your Cosmos DB endpoint (https://<cosmosdb-name>.documents.azure.com/), so the name needs to be unique across all Cosmos accounts in Azure.

az cosmosdb create --name <cosmosdb-name> --resource-group myResourceGroup --kind MongoDB

--kind MongoDB パラメーターにより、MongoDB のクライアント接続が有効になります。The --kind MongoDB parameter enables MongoDB client connections.

Azure Cosmos DB アカウントが作成されると、Azure CLI によって次の例のような情報が表示されます。When the Azure Cosmos DB account is created, the Azure CLI shows information similar to the following example.

注意

この例では、Azure CLI の出力形式として JSON を使用しています (既定)。This example uses JSON as the Azure CLI output format, which is the default. 別の出力形式を使用する場合は、「Azure CLI コマンドの出力形式」を参照してください。To use another output format, see Output formats for Azure CLI commands.

{
  "databaseAccountOfferType": "Standard",
  "documentEndpoint": "https://<cosmosdb-name>.documents.azure.com:443/",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Document
DB/databaseAccounts/<cosmosdb-name>",
  "kind": "MongoDB",
  "location": "West Europe",
  "name": "<cosmosdb-name>",
  "readLocations": [
    {
      "documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
      "failoverPriority": 0,
      "id": "<cosmosdb-name>-westeurope",
      "locationName": "West Europe",
      "provisioningState": "Succeeded"
    }
  ],
  "resourceGroup": "myResourceGroup",
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "writeLocations": [
    {
      "documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
      "failoverPriority": 0,
      "id": "<cosmosdb-name>-westeurope",
      "locationName": "West Europe",
      "provisioningState": "Succeeded"
    }
  ]
} 

データベースに Node.js アプリケーションを接続するConnect your Node.js application to the database

この手順では、MEAN.js サンプル アプリケーションを、先ほど作成した Azure Cosmos DB データベース アカウントに接続します。In this step, you connect your MEAN.js sample application to the Azure Cosmos DB database account you just created.

Node.js アプリケーションでの接続文字列の構成Configure the connection string in your Node.js application

MEAN.js リポジトリにある config/env/local-development.js を開きます。In your MEAN.js repository, open config/env/local-development.js.

このファイルの内容を次のコードに置き換えます。Replace the content of this file with the following code. さらに、2 つの <cosmosdb-name> プレースホルダーを実際の Cosmos アカウント名に置き換えます。Be sure to also replace the two <cosmosdb-name> placeholders with your Cosmos account name.

'use strict';

module.exports = {
  db: {
    uri: 'mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb-name>.documents.azure.com:10255/mean-dev?ssl=true&sslverifycertificate=false'
  }
};

キーを取得するRetrieve the key

Cosmos データベースに接続するには、データベース キーが必要です。In order to connect to a Cosmos database, you need the database key. az cosmosdb keys list コマンドを使用して、プライマリ キーを取得します。Use the az cosmosdb keys list command to retrieve the primary key.

az cosmosdb keys list --name <cosmosdb-name> --resource-group myResourceGroup --query "primaryMasterKey"

Azure CLI によって次の例のような情報が出力されます。The Azure CLI outputs information similar to the following example.

"RUayjYjixJDWG5xTqIiXjC..."

primaryMasterKey の値をコピーします。Copy the value of primaryMasterKey. これを local-development.js<primary_master_key> に上書きする形で貼り付けます。Paste this over the <primary_master_key> in local-development.js.

変更を保存します。Save your changes.

アプリケーションをもう一度実行するRun the application again.

npm start をもう一度実行します。Run npm start again.

npm start

開発環境が稼働したことを通知するコンソール メッセージが表示されます。A console message should now tell you that the development environment is up and running.

ブラウザーで http://localhost:3000 にアクセスします。Go to http://localhost:3000 in a browser. 上部のメニューの [Sign Up] を選択し、ダミー ユーザーを 2 つ作成します。Select Sign Up in the top menu and try to create two dummy users.

MEAN.js サンプル アプリケーションでは、ユーザー データをデータベースに格納します。The MEAN.js sample application stores user data in the database. 操作が成功し、MEAN.js が作成されたユーザーに自動的にサインインすれば、Azure Cosmos DB 接続は機能しています。If you are successful and MEAN.js automatically signs into the created user, then your Azure Cosmos DB connection is working.

MongoDB に正常に接続されている MEAN.js

データ エクスプローラーにデータを表示するView data in Data Explorer

Cosmos データベースの格納データは、Azure portal で表示したり、クエリしたりできます。Data stored in a Cosmos database is available to view and query in the Azure portal.

前の手順で作成されたユーザー データを、表示、クエリ、操作するには、Web ブラウザーで Azure Portal にログインします。To view, query, and work with the user data created in the previous step, login to the Azure portal in your web browser.

上部の検索ボックスに、「Azure Cosmos DB」と入力します。In the top Search box, enter Azure Cosmos DB. Cosmos アカウントのブレードが開いたら、自分の Cosmos アカウントを選択します。When your Cosmos account blade opens, select your Cosmos account. 左側のナビゲーションで、 [データ エクスプローラー] を選択します。In the left navigation, select Data Explorer. [コレクション] ウィンドウでコレクションを展開します。これで、コレクション内のドキュメントの表示とデータのクエリを実行でき、ストアド プロシージャ、トリガー、および UDF の作成と実行も行うことができます。Expand your collection in the Collections pane, and then you can view the documents in the collection, query the data, and even create and run stored procedures, triggers, and UDFs.

Azure Portal でのデータ エクスプローラー

Azure に Node.js アプリケーションをデプロイするDeploy the Node.js application to Azure

この手順では、Node.js アプリケーションを Cosmos DB にデプロイします。In this step, you deploy your Node.js application to Cosmos DB.

先ほど変更した構成ファイルは開発環境用であることにお気付きかもしれません (/config/env/local-development.js)。You may have noticed that the configuration file that you changed earlier is for the development environment (/config/env/local-development.js). アプリケーションを App Service にデプロイすると、既定では運用環境で実行されます。When you deploy your application to App Service, it will run in the production environment by default. したがって、ここで、同じ変更を該当する構成ファイルに対して行う必要があります。So now, you need to make the same change to the respective configuration file.

MEAN.js リポジトリにある config/env/production.js を開きます。In your MEAN.js repository, open config/env/production.js.

次の例に示すように、db オブジェクトの uri の値を置き換えます。In the db object, replace the value of uri as show in the following example. 前と同じように、必ずプレースホルダーを置き換えます。Be sure to replace the placeholders as before.

'mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb-name>.documents.azure.com:10255/mean?ssl=true&sslverifycertificate=false',

注意

Cosmos DB では SSL が必須なので、ssl=true オプションは重要です。The ssl=true option is important because Cosmos DB requires SSL.

ターミナルで、すべての変更を Git にコミットします。In the terminal, commit all your changes into Git. 両方のコマンドをコピーして、それらをまとめて実行することができます。You can copy both commands to run them together.

git add .
git commit -m "configured MongoDB connection string"

リソースをクリーンアップするClean up resources

アプリと Azure Cosmos DB アカウントの使用を完了したら、それ以上料金がかからないように、作成した Azure リソースを削除できます。When you're done with your app and Azure Cosmos DB account, you can delete the Azure resources you created so you don't incur more charges. リソースを削除するには、次の手順に従います。To delete the resources:

  1. Azure portal の検索バーで、「リソース グループ」を検索して選択します。In the Azure portal Search bar, search for and select Resource groups.

  2. 一覧から、このクイック スタートで作成したリソース グループを選択します。From the list, select the resource group you created for this quickstart.

    削除するリソース グループを選択する

  3. リソース グループの [概要] ページで、 [リソース グループの削除] を選択します。On the resource group Overview page, select Delete resource group.

    リソース グループを削除します

  4. 次のウィンドウで、削除するリソース グループの名前を入力し、 [削除] を選択します。In the next window, enter the name of the resource group to delete, and then select Delete.

次のステップNext steps

このクイックスタートでは、Azure Cloud Shell を使用して Azure Cosmos DB MongoDB API アカウントを作成し、MEAN.js アプリを作成、実行してそのアカウントにユーザーを追加する方法について説明しました。In this quickstart, you learned how to create an Azure Cosmos DB MongoDB API account using the Azure Cloud Shell, and create and run a MEAN.js app to add users to the account. これで、Azure Cosmos DB アカウントに追加のデータをインポートできるようになりました。You can now import additional data to your Azure Cosmos DB account.