Condividi tramite


Guida introduttiva: Usare le librerie di Azure (SDK) per Python per gestire un'istanza del server flessibile PostgreSQL

In questa guida introduttiva si apprenderà come usare Azure Python SDK per interagire con un'istanza del server flessibile Database di Azure per PostgreSQL.

Database di Azure per PostgreSQL server flessibile è un servizio gestito per l'esecuzione, la gestione e il ridimensionamento di database PostgreSQL a disponibilità elevata nel cloud. È possibile usare Python SDK per effettuare il provisioning di un'istanza del server flessibile Database di Azure per PostgreSQL, di più server o di più database in un server.

È possibile eseguire le operazioni seguenti con questo catalogo:

  1. Creare un server flessibile PostgreSQL
  2. Gestire database
  3. Configurare le regole del firewall
  4. Operazioni di ridimensionamento
  5. Backup e ripristino

Questa guida illustra le funzionalità di base di questo SDK, inclusa la creazione di un'istanza del server flessibile, la revisione del server creato, la creazione di un database e l'eliminazione dell'istanza.

Prerequisiti

Account con sottoscrizione attiva

Un account Azure con una sottoscrizione attiva Crearne uno gratuitamente.

Installare le librerie

Installare le librerie Python di Azure seguenti.

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

Eseguire il comando di accesso

Accedere al proprio account usando azurecli per autenticare l'account.

az login

Dopo l'esecuzione di questo comando, selezionare un account valido per accedere e quindi selezionare l'ID sottoscrizione dall'elenco per accedere.

Creare il server

Creare un file create_postgres_flexible_server.py e includere il codice seguente.

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()

Sostituire i parametri seguenti con i propri dati:

  • subscription-id: ID sottoscrizione personale.
  • resource-group: assegnare un nome al gruppo di risorse che si vuole usare. Se non esiste, lo script ne crea uno nuovo.
  • server-name: nome univoco che identifica l'istanza del server flessibile Database di Azure per PostgreSQL. Il nome postgres.database.azure.com di dominio viene aggiunto al nome del server specificato. Il nome del server deve contenere almeno tre caratteri e al massimo 63 caratteri e può contenere solo lettere minuscole, numeri e trattini.
  • Località: area di Azure in cui si vuole creare l'istanza del server flessibile Database di Azure per PostgreSQL. Definisce la posizione geografica in cui si trovano il server e i relativi dati. Scegliere un'area vicina agli utenti per ridurre la latenza. Il percorso deve essere specificato nel formato dei nomi brevi dell'area di Azure, ad esempio westus2, eastuso northeurope.
  • admin-username: nome utente amministratore primario per il server. Dopo aver creato il server, è possibile creare altri utenti.
  • password: password per l'amministratore primario per il server. Deve contenere tra 8 e 128 caratteri. La password deve contenere caratteri di tre categorie: lettere maiuscole, lettere minuscole, numeri (da 0 a 9) e caratteri non alfanumerici (!, $, #, %, ecc.).

È anche possibile aggiungere valori per altri parametri, ad esempio vnet-name, subnet-name, private-DNS-zone e personalizzare altri parametri, ad esempio dimensioni di archiviazione, versione del motore e così via.

Nota

La classe DefaultAzureCredential tenta di eseguire l'autenticazione usando vari metodi, ad esempio variabili di ambiente, identità gestite o l'interfaccia della riga di comando di Azure.
Assicurarsi di avere uno di questi metodi configurati. Altre informazioni sull'autenticazione sono disponibili nella documentazione di Azure SDK.

L'esecuzione di questo codice avvia il processo di creazione dell'istanza, che potrebbe richiedere alcuni minuti.

Esaminare le risorse distribuite

È possibile usare Python SDK, portale di Azure, interfaccia della riga di comando di Azure, Azure PowerShell e vari altri strumenti per convalidare la distribuzione ed esaminare le risorse distribuite. Di seguito sono indicati alcuni esempi.

Convalidare la distribuzione con Python SDK

Aggiungere la funzione check_server_created allo script esistente per usare l'attributo servers dell'istanza postgreSQLManagementClient per verificare se è stata creata l'istanza del server flessibile Database di Azure per 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}'.")

Chiamarlo con i parametri appropriati.

 check_server_created(subscription_id, resource_group, server_name)

Nota

La check_server_created funzione restituisce lo stato del server non appena viene effettuato il provisioning del server. Tuttavia, il server potrebbe richiedere alcuni minuti per diventare completamente disponibile. Assicurarsi di attendere che il server sia pronto prima di connettersi. Restituisce lo stato, l'ID, il nome, la posizione e altri parametri in risposta al metodo postgres_client.servers.get.

Creare un database con Python

Creare un database nel server flessibile con questo codice di esempio

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()

Sostituire i parametri seguenti con i dati

  • subscription-id: ID sottoscrizione personale.
  • resource-group-name: assegnare un nome al gruppo di risorse che si vuole usare. Lo script crea un nuovo gruppo di risorse, se non esiste.
  • sever-name: nome dell'istanza del server flessibile del database di Azure creata in precedenza
  • database-name: nome del database che si desidera creare.

Pulire le risorse

Se non è più necessaria l'istanza del server flessibile Database di Azure per PostgreSQL, è possibile eliminarla e il gruppo di risorse associato usando il portale, Python SDK o l'interfaccia della riga di comando di Azure.

Usare Python SDK per eliminare l'istanza

Creare un file "delete_server.py" per eliminare l'istanza del server Database di Azure per PostgreSQL creata.

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()