このガイドでは、Azure DocumentDB クラスターに接続するための Python コンソール アプリケーションの構築について説明します。 開発環境を構成し、Azure SDK for Python の azure.identity パッケージを使用して認証を行い、ドキュメントの作成、クエリ、更新などの操作を実行します。
[前提条件]
Azure サブスクリプション
- Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください
既存の Azure DocumentDB クラスター
- クラスターがない場合は、新しいクラスターを作成します
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
クラスター用に構成された Microsoft Entra 認証で、あなたの ID に
rootロールが付与されています。- Microsoft Entra 認証を有効にするには、 構成ガイドを確認します。
最新バージョンの Python。
コンソール アプリケーションを構成する
次に、新しいコンソール アプリケーション プロジェクトを作成し、クラスターに対して認証するために必要なライブラリをインポートします。
プロジェクトの新しいディレクトリを作成し、仮想環境を設定します。
mkdir mongodb-app cd mongodb-app python -m venv .venv仮想環境をアクティブにします。
# On Windows .venv\Scripts\activate # On macOS/Linux source .venv/bin/activateアプリケーション用の新しい Python ファイルを作成します。
touch app.pyAzure 認証用の
azure.identityライブラリをインストールします。pip install azure.identityPython 用の
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, OIDCCallbackResultMongoDB 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-documentdb-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}")