Creación de un servidor flexible Azure Database for PostgreSQL mediante el SDK de Azure para Java

En este inicio rápido, aprenderá a crear, actualizar y eliminar un servidor flexible Azure Database for PostgreSQL mediante la SDK de Azure para Java. Los ejemplos de código se escriben en Java y usan las bibliotecas de SDK de Azure para interactuar con el servicio Azure Database for PostgreSQL.

El SDK de Azure para Java proporciona un conjunto de bibliotecas que puede usar para interactuar con los servicios de Azure mediante Java. El SDK proporciona un modelo de programación coherente y simplifica el trabajo con servicios de Azure, incluido Azure Database for PostgreSQL.

Prerequisites

Operaciones compatibles con el SDK de Java de Azure

SDK de Azure para Java proporciona la azure-resourcemanager-postgresqlflexibleserver dependencia que admite estas operaciones para Azure Databases for PostgreSQL.

  • Creación de servidores flexibles de Azure Database for PostgreSQL
    Puede crear un nuevo servidor flexible Azure PostgreSQL con configuraciones especificadas, como la ubicación, la SKU, el almacenamiento y la versión.

  • Actualización de Azure Database for PostgreSQL - Servidor flexible
    Puede actualizar los servidores flexibles de Azure PostgreSQL existentes, incluidas las configuraciones cambiantes, como el inicio de sesión de administrador, la contraseña, la SKU, el almacenamiento y la versión.

  • Eliminar servidores flexibles de Azure Database for PostgreSQL

  • Recuperación de información de Azure Database for PostgreSQL
    Puede recuperar detalles sobre los servidores flexibles de Azure PostgreSQL existentes, incluidas sus configuraciones, estado y otros metadatos.

  • Administración de bases de datos
    Puede crear, actualizar, eliminar y recuperar bases de datos en el servidor flexible de Azure PostgreSQL.

  • Administración de reglas de firewall
    Puede crear, actualizar, eliminar y recuperar reglas de firewall de una instancia para controlar el acceso.

  • Administración de las opciones de configuración
    Puede administrar las opciones de configuración de un servidor flexible de Azure PostgreSQL, incluida la recuperación y actualización de parámetros.

Configuración de la cuenta mediante CLI de Azure

Antes de usar el SDK de Azure para Java para crear, actualizar o eliminar un servidor flexible de Azure Database for PostgreSQL, inicie sesión en su cuenta de Azure mediante la CLI de Azure.

Inicie sesión en su cuenta mediante CLI de Azure.

az login

Obtén el ID de inquilino de tu cuenta, ya que lo necesitarás para el código de la sección posterior.

az account show --query tenantId --output tsv

Creación de un proyecto

Cree un nuevo proyecto de Maven en el IDE preferido y agregue las dependencias de la biblioteca de Azure Database for PostgreSQL.

Al crear un proyecto de Maven, se crea un pom.xml archivo. Asegúrese de agregar todas las dependencias bajo la etiqueta <dependencies> de este archivo.

<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

Compruebe la versión más reciente de todas las dependencias antes de agregarlas al archivo.

Creación de una instancia de Azure Database for PostgreSQL

Para crear un servidor flexible de Azure PostgreSQL, cree un archivo denominado CreateServer.java con el código siguiente.

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

En este ejemplo se muestra cómo crear un servidor de instancia flexible de Azure Database for PostgreSQL mediante la PostgreSqlManager clase . Antes de invocar el método create, se autentica mediante TokenCredential y AzureProfile. Una vez autenticado, define el servidor flexible de Azure PostgreSQL con la configuración especificada.

Sustituya los siguientes parámetros del código por sus datos:

  • subscription-id: Su ID de suscripción de Azure.
  • tenant-id: identificador de inquilino de la cuenta de Microsoft Entra. Puede obtener esto desde el portal o mediante la CLI.
  • resource-group-name: nombre del grupo de recursos.
  • server-name: un nombre único para su servidor PostgreSQL.
  • location: la región de Azure para su servidor.
  • admin-username: nombre de usuario del administrador.
  • admin-password: la contraseña de administrador.

Autenticación

Puede autenticar las credenciales de diferentes maneras. En este ejemplo, use DefaultAzureCredentialBuilder para configurar y crear un objeto TokenCredential, que es una credencial que puede usar para autenticarse con servicios de Azure. Inicie sesión con CLI de Azure, como se mencionó en los requisitos previos.

Ejecute el archivo.

Asegúrese de crear un proyecto de Maven y ejecutar los siguientes comandos. Ejecute estos comandos cada vez que agregue una nueva dependencia en el pom.xml archivo para instalar esa dependencia en el repositorio local:

mvn clean install

Para ejecutar el archivo, use el IDE para ejecutar este código o use la línea de comandos para ejecutar el archivo Java.

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

Note

La ejecución de este código inicia el proceso de creación de la instancia, que puede tardar unos minutos en completarse.

Puede revisar el servidor flexible de PostgreSQL implementado Azure a través del portal de Azure, CLI de Azure, Azure PowerShell y otras herramientas para validar la implementación y revisar los recursos implementados.

Creación de una base de datos

Puede agregar una nueva base de datos al servidor recién creado. Asegúrese de que el servidor flexible de Azure Database for PostgreSQL está en ejecución.

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

Actualizar los datos del servidor

Cree un UpdateServer.java archivo.

También puede actualizar los datos del servidor mediante este SDK de Java y llamar al update() método desde la postgresqlflexibleserver biblioteca.

Mediante el update método , puede actualizar la versión, el nombre de usuario de administrador, la contraseña y otras propiedades.

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");
 }
}

Ejecute el archivo Java y revise los cambios realizados en el recurso mediante el UpdateServer.java archivo .

Limpieza de recursos

Puede eliminar los servidores flexibles creados eliminando el servidor flexible mediante el método delete() de la biblioteca postgresqlflexibleserver.

Cree un archivo DeleteServer.java y agregue el siguiente código.

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");
 }

}

Reemplace los parámetros siguientes por sus datos:

  • subscription-id: su propia Id. de suscripción.
  • resource-group: el nombre del grupo de recursos que desea utilizar.
  • tenant-id: identificador de inquilino de la cuenta de Microsoft Entra. Puede obtener esto desde el portal o mediante la CLI.
  • server-name: El nombre del servidor flexible de base de datos de Azure que ha creado.

También puede eliminar el grupo de recursos creado a través del portal, la CLI o PowerShell. Si quiere eliminarlo mediante la CLI o PowerShell, siga los pasos mencionados en la sección CLI y PowerShell.

Reemplace los marcadores de posición por sus datos y ejecute el archivo.

Como alternativa, puede quitar el grupo de recursos mediante:

  • CLI de Azure:az group delete --name <resource_group>
  • PowerShell:Remove-AzResourceGroup -Name <resource_group>
  • Azure Portal: vaya al grupo de recursos y elimínelo.