次の方法で共有


クイック スタート: Python 用 Azure ライブラリ (SDK) を使用して PostgreSQL フレキシブル サーバー インスタンスを管理する

このクイック スタートでは、Azure Python SDK を使用して Azure Database for PostgreSQL フレキシブル サーバー インスタンスと対話する方法について説明します。

Azure Database for PostgreSQL フレキシブル サーバーは、クラウドで高可用性 PostgreSQL データベースを実行、管理、スケーリングするためのマネージド サービスです。 Python SDK を使用して、Azure Database for PostgreSQL フレキシブル サーバー インスタンス、複数のサーバー、または 1 つのサーバー上の複数のデータベースをプロビジョニングできます。

このライブラリでは次の操作を実行できます。

  1. PostgreSQL フレキシブル サーバーの作成
  2. データベースの管理
  3. ファイアウォール規則の構成
  4. スケーリング操作
  5. バックアップと復元

このガイドでは、フレキシブル サーバー インスタンスの作成、作成されたサーバーの確認、データベースの作成、インスタンスの削除など、この SDK の基本的な機能について説明します。

前提条件

アクティブなサブスクリプションが含まれるアカウント

アクティブなサブスクリプションを持つ Azure アカウント 無料で作成する

ライブラリをインストールする

次の Python ライブラリをインストールします。

pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-postgresqlflexibleservers

ログイン コマンドを実行する

azurecli を使用してアカウントにログインし、アカウントを認証します。

az login

このコマンドが実行されたら、サインインする有効なアカウントを選択し、後で一覧からサブスクリプション ID を選択してログインします。

サーバーを作成する

create_postgres_flexible_server.py ファイルを作成し、次のコードを含めます。

from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient

def main():
    client = PostgreSQLManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id="<subscription-id>",
    )

    response = client.servers.begin_create(
        resource_group_name="<resource-group-name>",
        server_name="<server-name>",
        parameters={
            "___location": "<region>",
            "properties": {
                "administratorLogin": "<admin-username>",
                "administratorLoginPassword": "<password>",
                "availabilityZone": "1",
                "backup": {"backupRetentionDays": 7, "geoRedundantBackup": "Disabled"},
                "createMode": "Create",
                "highAvailability": {"mode": "ZoneRedundant"},
                "network": {
                    "delegatedSubnetResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
                    "privateDnsZoneArmResourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Network/privateDnsZones/<private-DNS-zone-name>.postgres.database.azure.com",
                },
                "version": "<pg-version>",
            },
            "sku": {"name": "<sku-name>", "tier": "<tier-type>"},
            "tags": {"ElasticServer": "1"},
        },
    ).result()
    print(response)

if __name__ == "__main__":
    main()

次のパラメーターは実際のデータに置き換えてください。

  • subscription_id: 実際のサブスクリプション ID。
  • resource_group: 使用するリソース グループの名前を付けます。 存在しない場合は、スクリプトによって新しいものが作成されます。
  • server_name: Azure Database for PostgreSQL フレキシブル サーバー インスタンスを識別する一意の名前。 指定したサーバー名にドメイン名 postgres.database.azure.com が追加されます。 サーバー名は 3 文字以上 63 文字以下である必要があり、小文字、数字、およびハイフンのみを使用できます。
  • Location: Azure Database for PostgreSQL フレキシブル サーバー インスタンスを作成する Azure リージョン。 これは、サーバーとそのデータが存在する地理的な場所を定義します。 待機時間を短縮するために、ユーザーに近いリージョンを選択します。 Location は、westus2eastusnortheurope など、Azure リージョンの短い名前の形式で指定する必要があります。
  • admin-username: サーバーのプライマリ管理者ユーザー名。 サーバーの作成後に追加のユーザーを作成できます。
  • password: サーバーのプライマリ管理者のパスワード。 8 ~ 128 文字にする必要があります。 パスワードには、英大文字、英小文字、数字 (0 から 9)、英数字以外の文字 (!、$、#、% など) のうち、3 種類の文字が含まれている必要があります。

vnet-name、subnet-name、private-DNS-zone などの他のパラメーターの値を追加したり、ストレージ サイズ、エンジンのバージョンなどの他のパラメーターをカスタマイズしたりすることもできます。

DefaultAzureCredential クラスは、環境変数、マネージド ID、Azure CLI などのさまざまなメソッドを使用して認証を試みます。
これらのメソッドのいずれかが設定されていることを確認します。 認証の詳細については、Azure SDK のドキュメントを参照してください。

このコードを実行すると、インスタンス作成プロセスが開始されます。完了するまでに数分かかる場合があります。

デプロイされているリソースを確認する

Python SDK、Azure portal、Azure CLI、Azure PowerShell、その他のさまざまなツールを使用して、デプロイを検証し、デプロイされたリソースを確認できます。 いくつかの例を次に示します。

Python SDK を使用してデプロイを検証する

check_server_created 関数を既存のスクリプトに追加し、PostgreSQLManagementClient インスタンスのサーバー属性を使用して、Azure Database for PostgreSQL フレキシブル サーバー インスタンスが作成されたかどうかを確認します。

def check_server_created(subscription_id, resource_group, server_name):
    # Authenticate with your Azure account
    credential = DefaultAzureCredential()

    # Create PostgreSQL management client
    postgres_client = PostgreSQLManagementClient(credential, subscription_id)

    try:
        server = postgres_client.servers.get(resource_group, server_name)
        if server:
            print(f"Server '{server_name}' exists in resource group '{resource_group}'.")
            print(f"Server state: {server.state}")
        else:
            print(f"Server '{server_name}' not found in resource group '{resource_group}'.")
    except Exception as e:
        print(f"Error occurred: {e}")
        print(f"Server '{server_name}' not found in resource group '{resource_group}'.")

適切なパラメーターを使用して呼び出します。

 check_server_created(subscription_id, resource_group, server_name)

check_server_created 関数は、サーバーがプロビジョニングされるとすぐにサーバーの状態を返します。 ただし、サーバーが完全に使用可能になるまでに数分かかる場合があります。 サーバーに接続する前に、サーバーの準備が整うのを待ってください。 postgres_client.servers.get メソッドへの応答で、状態、ID、名前、場所、その他のパラメーターが返されます。

Python を使用してデータベースを作成する

このサンプル コードを使用してフレキシブル サーバーにデータベースを作成する

from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient

def main():
    client = PostgreSQLManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id=<subscription-id>,
    )
    # Create database
    response = client.databases.begin_create(
        resource_group_name="<resource-group-name>",
        server_name="<server-name>",
        database_name="<database-name>",
        parameters={"properties": {"charset": "utf8", "collation": "en_US.utf8"}},
    ).result()
    print(response)

if __name__ == "__main__":
    main()

次のパラメーターは実際のデータに置き換えてください

  • subscription_id: 実際のサブスクリプション ID
  • resource_group-name: 使用するリソース グループの名前。 存在しない場合は、スクリプトによって新しいリソース グループが作成されます。
  • server-name: 前に作成した Azure データベース フレキシブル サーバー インスタンスの名前
  • database-name: 作成するデータベースの名前。

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

Azure Database for PostgreSQL フレキシブル サーバー インスタンスが不要になった場合は、ポータル、Python SDK、または Azure CLI のいずれかを使用して、そのインスタンスと関連付けられているリソース グループを削除できます。

Python SDK を使用してインスタンスを削除する

'delete_server.py' ファイルを作成して、作成された Azure Databases for PostgreSQL Server インスタンスを削除します。

from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient

def main():
    client = PostgreSQLManagementClient(
          credential=DefaultAzureCredential(),
          subscription_id=<subscription-id>,)
    client.servers.begin_delete(
          resource_group_name=<rg-name>,
          server_name=<server-name>,
    ).result()
if __name__ == "__main__":
    main()