このクイック スタートでは、Azure Python SDK を使用して Azure Database for PostgreSQL フレキシブル サーバー インスタンスと対話する方法について説明します。
Azure Database for PostgreSQL フレキシブル サーバーは、クラウドで高可用性 PostgreSQL データベースを実行、管理、スケーリングするためのマネージド サービスです。 Python SDK を使用して、Azure Database for PostgreSQL フレキシブル サーバー インスタンス、複数のサーバー、または 1 つのサーバー上の複数のデータベースをプロビジョニングできます。
このライブラリでは次の操作を実行できます。
- PostgreSQL フレキシブル サーバーの作成
- データベースの管理
- ファイアウォール規則の構成
- スケーリング操作
- バックアップと復元
このガイドでは、フレキシブル サーバー インスタンスの作成、作成されたサーバーの確認、データベースの作成、インスタンスの削除など、この 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 は、
westus2
、eastus
、northeurope
など、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()