Creare un server flessibile Database di Azure per PostgreSQL usando il Azure SDK per Java

In questa guida introduttiva si apprenderà come creare, aggiornare ed eliminare un server flessibile Database di Azure per PostgreSQL usando il Azure SDK per Java. Gli esempi di codice sono scritti in Java e usano le librerie di Azure SDK per interagire con il servizio Database di Azure per PostgreSQL.

Il Azure SDK per Java fornisce un set di librerie che è possibile usare per interagire con i servizi di Azure tramite Java. L'SDK offre un modello di programmazione coerente e semplifica l'uso dei servizi di Azure, incluso Database di Azure per PostgreSQL.

Prerequisiti

Operazioni supportate da Azure Java SDK

Azure SDK per Java fornisce la azure-resourcemanager-postgresqlflexibleserver dipendenza che supporta queste operazioni per database Azure per PostgreSQL.

  • Creazione di server flessibili per Database di Azure per PostgreSQL
    È possibile creare un nuovo server flessibile Azure PostgreSQL con configurazioni specificate, ad esempio posizione, SKU, archiviazione e versione.

  • Aggiornamento dei server flessibili di Database di Azure per PostgreSQL
    È possibile aggiornare i server flessibili di Azure PostgreSQL esistenti, incluse le modifiche alle configurazioni, ad esempio l'accesso dell'amministratore, la password, lo SKU, l'archiviazione e la versione.

  • Eliminazione dei server flessibili di Database di Azure per PostgreSQL

  • Recupero delle informazioni di Database di Azure per PostgreSQL
    È possibile recuperare informazioni dettagliate sui server flessibili Azure PostgreSQL esistenti, incluse le configurazioni, lo stato e altri metadati.

  • Gestione dei database
    È possibile creare, aggiornare, eliminare e recuperare database all'interno del server flessibile Azure PostgreSQL.

  • Gestione delle regole del firewall
    È possibile creare, aggiornare, eliminare e recuperare regole del firewall per un'istanza per controllare l'accesso.

  • Gestione delle impostazioni di configurazione
    È possibile gestire le impostazioni di configurazione per un server flessibile di Azure PostgreSQL, incluso il recupero e l'aggiornamento dei parametri.

Configurare l'account usando interfaccia della riga di comando di Azure

Prima di usare il Azure SDK per Java per creare, aggiornare o eliminare un server flessibile Database di Azure per PostgreSQL, accedere all'account Azure usando il interfaccia della riga di comando di Azure.

Accedere al proprio account usando interfaccia della riga di comando di Azure.

az login

Recupera l'ID del tenant del tuo account, poiché ti servirà per il codice nella sezione seguente.

az account show --query tenantId --output tsv

Creare un progetto

Creare un nuovo progetto Maven nell'IDE preferito e aggiungere le dipendenze per la libreria di Database di Azure per PostgreSQL.

Quando si crea un progetto Maven, si crea un pom.xml file. Assicurarsi di aggiungere tutte le dipendenze sotto il tag <dependencies> di questo file.

<dependency>
 <groupId>com.azure</groupId>
 <artifactId>azure-core-management</artifactId>
 <version>1.17.0</version>
</dependency>
<dependency>
 <groupId>com.azure</groupId>
 <artifactId>azure-identity</artifactId>
 <version>1.15.3</version>
 <scope>compile</scope>
</dependency>
<dependency>
 <groupId>com.azure.resourcemanager</groupId>
 <artifactId>azure-resourcemanager-resources</artifactId>
 <version>2.48.0</version>
</dependency>
 <dependency>
 <groupId>com.azure.resourcemanager</groupId>
 <artifactId>azure-resourcemanager-postgresqlflexibleserver</artifactId>
 <version>1.1.0</version>
</dependency>
<dependency>
 <groupId>com.azure</groupId>
 <artifactId>azure-core-http-netty</artifactId>
 <version>1.15.11</version>
</dependency>
<dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-slf4j-impl</artifactId>
 <version>2.20.0</version>
</dependency>

Note

Controllare la versione più recente per tutte le dipendenze prima di aggiungerle al file.

Creare un'istanza di Database di Azure per PostgreSQL

Per creare un server flessibile Azure PostgreSQL, creare un file denominato CreateServer.java con il codice seguente.

package com.example.restservice;
import java.util.HashMap;
import java.util.Map;

import com.azure.core.credential.TokenCredential;
import com.azure.core.http.policy.HttpLogDetailLevel;
import com.azure.core.http.policy.HttpLogOptions;
import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.resourcemanager.postgresqlflexibleserver.PostgreSqlManager;
import com.azure.resourcemanager.postgresqlflexibleserver.models.ActiveDirectoryAuthEnum;
import com.azure.resourcemanager.postgresqlflexibleserver.models.ArmServerKeyType;
import com.azure.resourcemanager.postgresqlflexibleserver.models.AuthConfig;
import com.azure.resourcemanager.postgresqlflexibleserver.models.DataEncryption;
import com.azure.resourcemanager.postgresqlflexibleserver.models.HighAvailability;
import com.azure.resourcemanager.postgresqlflexibleserver.models.HighAvailabilityMode;
import com.azure.resourcemanager.postgresqlflexibleserver.models.IdentityType;
import com.azure.resourcemanager.postgresqlflexibleserver.models.PasswordAuthEnum;
import com.azure.resourcemanager.postgresqlflexibleserver.models.Server;
import com.azure.resourcemanager.postgresqlflexibleserver.models.ServerVersion;
import com.azure.resourcemanager.postgresqlflexibleserver.models.Sku;
import com.azure.resourcemanager.postgresqlflexibleserver.models.SkuTier;
import com.azure.resourcemanager.postgresqlflexibleserver.models.Storage;
import com.azure.resourcemanager.postgresqlflexibleserver.models.UserAssignedIdentity;
public class CreateServer {
    public static void main(String[] args) throws Exception {
              String subscriptionId = "<subscription-id>";
              AzureProfile profile = new AzureProfile("<tenant-id>", subscriptionId, AzureEnvironment.AZURE);

              TokenCredential credential = new DefaultAzureCredentialBuilder()
              .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint()).build();
              PostgreSqlManager manager = PostgreSqlManager.authenticate(credential, profile);
              server = manager.servers()
              .define("<server-name>")
              .withRegion("<location>")
              .withExistingResourceGroup("<resource-group-name>")
              .withSku(new Sku().withName("Standard_D4ds_v5").withTier(SkuTier.GENERAL_PURPOSE))
              .withAuthConfig(new AuthConfig().withActiveDirectoryAuth(ActiveDirectoryAuthEnum.DISABLED)
              .withPasswordAuth(PasswordAuthEnum.ENABLED))
              .withIdentity(new UserAssignedIdentity().withType(IdentityType.NONE))
              .withDataEncryption(new DataEncryption().withType(ArmServerKeyType.SYSTEM_MANAGED))
              .withVersion(ServerVersion.ONE_SIX).withAuthConfig(null)
              .withAdministratorLogin("<user-name>")
              .withAdministratorLoginPassword("<password>").withStorage(new Storage().withStorageSizeGB(32))
              .withHighAvailability(new HighAvailability().withMode(HighAvailabilityMode.DISABLED))
              .create();
              System.out.println("Azure Database for PostgreSQL Flexible server is created with server name"+server.name());
    }
}

Questo esempio illustra la creazione di un server di istanza flessibile di Database di Azure per PostgreSQL usando la PostgreSqlManager classe . Prima di richiamare il metodo di creazione, esegue l'autenticazione usando TokenCredential e AzureProfile. Dopo l'autenticazione, definisce il server flessibile Azure PostgreSQL con la configurazione specificata.

Sostituire i parametri seguenti nel codice con i dati:

  • subscription-id: ID della sottoscrizione di Azure.
  • tenant-id : ID tenant dell'account Microsoft Entra. È possibile ottenerlo dal portale o usando l'interfaccia della riga di comando.
  • resource-group-name: nome del gruppo di risorse.
  • server-name: nome univoco per il server PostgreSQL.
  • location: area di Azure per il server.
  • admin-username: nome utente dell'amministratore.
  • admin-password: password amministratore.

Authentication

È possibile autenticare le credenziali in modi diversi. In questo esempio usare DefaultAzureCredentialBuilder per configurare e creare un oggetto TokenCredential, ovvero una credenziale che è possibile usare per eseguire l'autenticazione con i servizi di Azure. Accedere usando interfaccia della riga di comando di Azure, come indicato nei prerequisiti.

Eseguire il file

Assicurarsi di creare un progetto Maven ed eseguire i comandi seguenti. Eseguire questi comandi ogni volta che si aggiunge una nuova dipendenza nel pom.xml file per installare tale dipendenza nel repository locale:

mvn clean install

Per eseguire il file, usare l'IDE per eseguire questo codice o usare la riga di comando per eseguire il file Java.

javac <file-name>.java
java <file-name>

Note

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

È possibile esaminare il server flessibile di Azure PostgreSQL distribuito tramite il 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.

Creazione di un database

È possibile aggiungere un nuovo database al server appena creato. Assicurarsi che il server flessibile Database di Azure per PostgreSQL sia in esecuzione.

package com.example.restservice;

import com.azure.core.credential.TokenCredential;
import com.azure.core.http.policy.HttpLogDetailLevel;
import com.azure.core.http.policy.HttpLogOptions;
import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.resourcemanager.postgresqlflexibleserver.PostgreSqlManager;

public class CreateDatabaseSample {
    public static void main(String args[]) {
        String subscriptionId = "<subscription-id>";
        AzureProfile profile = new AzureProfile("<tenant-id>", subscriptionId, AzureEnvironment.AZURE);

        TokenCredential credential = new DefaultAzureCredentialBuilder()
        .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint()).build();
        PostgreSqlManager manager = PostgreSqlManager.authenticate(credential, profile);
        manager.databases()
        .define("<database-name>")
        .withExistingFlexibleServer("<resource-group-name>", "<server-name>")
        .withCharset("utf8")
        .withCollation("en_US.utf8")
        .create();
    }
}

Aggiornare i dati del server

Creare un UpdateServer.java file.

È anche possibile aggiornare i dati del server usando questo SDK Java e chiamando il update() metodo dalla postgresqlflexibleserver libreria.

Usando il update metodo è possibile aggiornare la versione, il nome utente amministratore, la password e altre proprietà.

package com.example.restservice;

import com.azure.core.credential.TokenCredential;
import com.azure.core.http.policy.HttpLogDetailLevel;
import com.azure.core.http.policy.HttpLogOptions;
import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.resourcemanager.postgresqlflexibleserver.PostgreSqlManager;
import com.azure.resourcemanager.postgresqlflexibleserver.models.ActiveDirectoryAuthEnum;
import com.azure.resourcemanager.postgresqlflexibleserver.models.AuthConfig;
import com.azure.resourcemanager.postgresqlflexibleserver.models.AzureManagedDiskPerformanceTiers;
import com.azure.resourcemanager.postgresqlflexibleserver.models.Backup;
import com.azure.resourcemanager.postgresqlflexibleserver.models.CreateModeForUpdate;
import com.azure.resourcemanager.postgresqlflexibleserver.models.PasswordAuthEnum;
import com.azure.resourcemanager.postgresqlflexibleserver.models.Server;
import com.azure.resourcemanager.postgresqlflexibleserver.models.Sku;
import com.azure.resourcemanager.postgresqlflexibleserver.models.SkuTier;
import com.azure.resourcemanager.postgresqlflexibleserver.models.Storage;
import com.azure.resourcemanager.postgresqlflexibleserver.models.StorageAutoGrow;

public class UpdateServer {
    public static void main(String args[]) {
         String subscriptionId = "<subscription-id>";
         AzureProfile profile = new AzureProfile("<tenant-id>", subscriptionId, AzureEnvironment.AZURE);

         TokenCredential credential = new DefaultAzureCredentialBuilder()
         .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint()).build();
         PostgreSqlManager manager = PostgreSqlManager.authenticate(credential, profile);
         PostgreSqlManager postgreSqlManager = PostgreSqlManager.configure()
         .withLogOptions(new HttpLogOptions()
         .setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
         .authenticate(credential, profile);
         Server resource = manager.servers()
         .getByResourceGroupWithResponse("<resource-group-name>", "<server-name>", com.azure.core.util.Context.NONE)
         .getValue();
         resource.update()
         .withSku(new Sku().withName("Standard_D16ds_v5").withTier(SkuTier.GENERAL_PURPOSE))
         .withAdministratorLoginPassword("<password>")
         .withStorage(new Storage().withStorageSizeGB(1024)
         .withAutoGrow(StorageAutoGrow.DISABLED)
         .withTier(AzureManagedDiskPerformanceTiers.P30))
         .withBackup(new Backup().withBackupRetentionDays(20))
         .withAuthConfig(new AuthConfig().withActiveDirectoryAuth(ActiveDirectoryAuthEnum.ENABLED)
         .withPasswordAuth(PasswordAuthEnum.ENABLED)
         .withTenantId("<tenant-id>"))
         .withCreateMode(CreateModeForUpdate.UPDATE)
         .apply();
         System.out.println("Updated successfully");
 }
}

Eseguire il file Java ed esaminare le modifiche apportate nella risorsa usando il UpdateServer.java file .

Pulire le risorse

È possibile pulire i server flessibili creati eliminando il server flessibile con il delete() metodo dalla postgresqlflexibleserver libreria.

Creare un file DeleteServer.java e incollare il codice seguente.

package com.example.restservice;

import com.azure.core.credential.TokenCredential;
import com.azure.core.http.policy.HttpLogDetailLevel;
import com.azure.core.http.policy.HttpLogOptions;
import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.resourcemanager.postgresqlflexibleserver.PostgreSqlManager;

public class DeleteInstance {
    public static void main(String args[]) {
          String subscriptionId = "<subscription-id>";
          AzureProfile profile = new AzureProfile("<tenant-id>", subscriptionId, AzureEnvironment.AZURE);

          TokenCredential credential = new DefaultAzureCredentialBuilder()
          .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint()).build();
          PostgreSqlManager manager = PostgreSqlManager.authenticate(credential, profile);
          PostgreSqlManager postgreSqlManager = PostgreSqlManager.configure()
          .withLogOptions(new HttpLogOptions()
          .setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
          .authenticate(credential, profile);
          manager.servers().delete("<resource-group>", "<server-name>", com.azure.core.util.Context.NONE);
          System.out.println("Deleted successfully");
 }

}

Sostituire i parametri seguenti con dati personalizzati:

  • subscription-id: ID sottoscrizione personale.
  • resource-group: nome del gruppo di risorse da usare.
  • tenant-id : ID tenant dell'account Microsoft Entra. È possibile ottenerlo dal portale o usando l'interfaccia della riga di comando.
  • server-name: Il nome del server flessibile di database di Azure che hai creato.

È anche possibile eliminare il gruppo di risorse creato tramite il portale, l'interfaccia della riga di comando o PowerShell. Per eliminarlo usando l'interfaccia della riga di comando o PowerShell, seguire i passaggi indicati nella sezione Interfaccia della riga di comando e PowerShell.

Sostituire i segnaposto con i dettagli ed eseguire il file.

In alternativa, è possibile rimuovere il gruppo di risorse usando:

  • Interfaccia della riga di comando di Azure: az group delete --name <resource_group>
  • PowerShell:Remove-AzResourceGroup -Name <resource_group>
  • Portale di Azure: passare al gruppo di risorse ed eliminarlo.