このガイドでは、Azure Cosmos DB for MongoDB 仮想コア クラスターに接続する Python コンソール アプリケーションを構築する手順について説明します。 開発環境を構成し、Azure SDK for Python の azure.identity
パッケージを使用して認証を行い、ドキュメントの作成、クエリ、更新などの操作を実行します。
[前提条件]
- 既存の Azure Cosmos DB for MongoDB (仮想コア) クラスター。
Azure Cloud Shell の Azure CLI の最新バージョン。
- CLI 参照コマンドをローカルで実行する場合は、
az login
コマンドを使用して Azure CLI にサインインします。
- CLI 参照コマンドをローカルで実行する場合は、
クラスター用に構成された Microsoft Entra 認証で、あなたの ID に
dbOwner
ロールが付与されています。- Microsoft Entra 認証を有効にするには、 構成ガイドを確認します。
最新バージョンの Python。
コンソール アプリケーションを構成する
次に、新しいコンソール アプリケーション プロジェクトを作成し、クラスターに対して認証するために必要なライブラリをインポートします。
プロジェクトの新しいディレクトリを作成し、仮想環境を設定します。
mkdir cosmos-mongodb-app cd cosmos-mongodb-app python -m venv .venv
仮想環境をアクティブにします。
# On Windows .venv\Scripts\activate # On macOS/Linux source .venv/bin/activate
アプリケーション用の新しい Python ファイルを作成します。
touch app.py
Azure 認証用の
azure.identity
ライブラリをインストールします。pip install azure.identity
Python 用の
pymongo
ドライバーをインストールします。pip install pymongo
クラスターに接続する
次に、 Azure.Identity
ライブラリを使用して、クラスターへの接続に使用する TokenCredential
を取得します。 公式の MongoDB ドライバーには、クラスターに接続するときに使用するために Microsoft Entra からトークンを取得するために実装する必要がある特別なインターフェイスがあります。
Python ファイルの先頭に必要なモジュールをインポートします。
from azure.identity import DefaultAzureCredential from pymongo import MongoClient from pymongo.auth_oidc import OIDCCallback, OIDCCallbackContext, OIDCCallbackResult
MongoDB OpenID Connect (OIDC) コールバック インターフェイスを実装するカスタム クラスを作成します。
class AzureIdentityTokenCallback(OIDCCallback): def __init__(self, credential): self.credential = credential def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult: token = self.credential.get_token( "https://ossrdbms-aad.database.windows.net/.default").token return OIDCCallbackResult(access_token=token)
クラスター名変数を設定します。
clusterName = "<azure-cosmos-db-mongodb-vcore-cluster-name>"
DefaultAzureCredential のインスタンスを作成し、認証プロパティを設定します。
credential = DefaultAzureCredential() authProperties = {"OIDC_CALLBACK": AzureIdentityTokenCallback(credential)}
Microsoft Entra 認証で構成された MongoDB クライアントを作成します。
client = MongoClient( f"mongodb+srv://{clusterName}.global.mongocluster.cosmos.azure.com/", connectTimeoutMS=120000, tls=True, retryWrites=True, authMechanism="MONGODB-OIDC", authMechanismProperties=authProperties ) print("Client created")
一般的な操作を実行する
最後に、公式ライブラリを使用して、データベース、コレクション、ドキュメントで一般的なタスクを実行します。 ここでは、MongoDB または DocumentDB と対話してコレクションと項目を管理する場合と同じクラスとメソッドを使用します。
データベースへの参照を取得します。
database = client.get_database("<database-name>") print("Database pointer created")
コレクションへの参照を取得します。
collection = database.get_collection("<container-name>") print("Collection pointer created")
ドキュメントを作成し、を使用してコレクションに
collection.update_one
します。new_document = { "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "category": "gear-surf-surfboards", "name": "Yamba Surfboard", "quantity": 12, "price": 850.00, "clearance": False, } filter = { "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", } payload = { "$set": new_document } result = collection.update_one(filter, payload, upsert=True)
collection.find_one
を使用して、コレクションから特定のドキュメントを取得します。filter = { "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "category": "gear-surf-surfboards" } existing_document = collection.find_one(filter) print(f"Read document _id:\t{existing_document['_id']}")
フィルターに一致する
collection.find
を持つ複数のドキュメントを照会します。filter = { "category": "gear-surf-surfboards" } matched_documents = collection.find(filter) for document in matched_documents: print(f"Found document:\t{document}")