Criar um servidor flexível Banco de Dados do Azure para PostgreSQL usando o SDK do Azure para Java

Neste início rápido, você aprenderá a criar, atualizar e excluir um servidor flexível Banco de Dados do Azure para PostgreSQL usando o SDK do Azure para Java. Os exemplos de código são escritos em Java e usam as bibliotecas do SDK do Azure para interagir com o serviço banco de dados do Azure para PostgreSQL.

O SDK do Azure para Java fornece um conjunto de bibliotecas que você pode usar para interagir com serviços de Azure usando Java. O SDK fornece um modelo de programação consistente e simplifica o trabalho com os serviços do Azure, incluindo o Banco de Dados do Azure para PostgreSQL.

Pré-requisitos

Operações compatíveis com o SDK do Java do Azure

SDK do Azure para Java fornece a azure-resourcemanager-postgresqlflexibleserver dependência que dá suporte a essas operações para bancos de dados Azure para PostgreSQL.

  • Criando servidores flexíveis do Banco de Dados do Azure para PostgreSQL
    Você pode criar um novo servidor flexível Azure PostgreSQL com configurações especificadas, como localização, SKU, armazenamento e versão.

  • Atualizando servidores flexíveis do Banco de Dados do Azure para PostgreSQL
    Você pode atualizar servidores flexíveis Azure PostgreSQL existentes, incluindo a alteração de configurações como entrada de administrador, senha, SKU, armazenamento e versão.

  • Excluindo servidores flexíveis do Banco de Dados do Azure para PostgreSQL

  • Recuperando informações do Banco de Dados do Azure para PostgreSQL
    Você pode recuperar detalhes sobre os servidores flexíveis do PostgreSQL Azure existentes, incluindo suas configurações, status e outros metadados.

  • Gerenciamento de bancos de dados
    Você pode criar, atualizar, excluir e recuperar bancos de dados no servidor flexível Azure PostgreSQL.

  • Gerenciando regras de firewall
    Você pode criar, atualizar, excluir e recuperar regras de firewall para uma instância para controlar o acesso.

  • Gerenciando configurações
    Você pode gerenciar as configurações de um servidor flexível Azure PostgreSQL, incluindo parâmetros de recuperação e atualização.

Configurar sua conta usando CLI do Azure

Antes de usar o SDK do Azure para Java criar, atualizar ou excluir um servidor Banco de Dados do Azure para PostgreSQL flexível, entre em sua conta Azure usando o CLI do Azure.

Entre em sua conta usando CLI do Azure.

az login

Obtenha o ID do seu locatário, pois você precisará dele para o código na seção posterior.

az account show --query tenantId --output tsv

Criar projeto

Crie um novo projeto Maven em seu IDE preferido e adicione as dependências para a biblioteca do Banco de Dados do Azure para PostgreSQL.

Ao criar um projeto maven, você cria um pom.xml arquivo. Certifique-se de adicionar todas as dependências sob a tag <dependencies> deste arquivo.

<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

Verifique a versão mais recente de todas as dependências antes de adicioná-las ao arquivo.

Criar uma instância do Banco de Dados do Azure para PostgreSQL

Para criar um servidor flexível Azure PostgreSQL, crie um arquivo nomeado CreateServer.java com o código a seguir.

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

Este exemplo demonstra a criação de um servidor de instância flexível do Banco de Dados do Azure para PostgreSQL usando a PostgreSqlManager classe. Antes de invocar o método create, ele é autenticado usando o TokenCredential e o AzureProfile. Depois de autenticado, ele define o servidor flexível Azure PostgreSQL com a configuração especificada.

Substitua os seguintes parâmetros no código pelos seus dados:

  • subscription-id: Sua ID da assinatura do Azure.
  • tenant-id : a ID do locatário da sua conta do Microsoft Entra. Você pode obter isso no portal ou usando a CLI.
  • resource-group-name: O nome do seu grupo de recursos.
  • server-name: Um nome exclusivo para o seu servidor PostgreSQL.
  • location: A região do Azure para o seu servidor.
  • admin-username: O nome de usuário do administrador.
  • admin-password: A senha do administrador.

Authentication

Você pode autenticar suas credenciais de maneiras diferentes. Neste exemplo, use DefaultAzureCredentialBuilder para configurar e criar um objeto TokenCredential, que é uma credencial que você pode usar para autenticar com Azure serviços. Entre usando CLI do Azure, conforme mencionado nos pré-requisitos.

Execute o arquivo

Crie um projeto maven e execute os comandos a seguir. Execute esses comandos sempre que você adicionar uma nova dependência ao pom.xml arquivo para instalar essa dependência em seu repositório local:

mvn clean install

Para executar o arquivo, use o IDE para executar esse código ou use a linha de comando para executar o arquivo Java.

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

Note

A execução deste código iniciará o processo de criação da instância, que pode levar alguns minutos para ser concluído.

Você pode examinar o servidor flexível Azure PostgreSQL implantado por meio do portal Azure, CLI do Azure, Azure PowerShell e várias outras ferramentas para validar a implantação e examinar os recursos implantados.

Criar um banco de dados

Você pode adicionar um novo banco de dados ao servidor recém-criado. Verifique se o servidor Banco de Dados do Azure para PostgreSQL flexível está em execução.

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

Atualizar os dados do servidor

Crie um UpdateServer.java arquivo.

Você também pode atualizar os dados do servidor usando esse SDK Java e chamando o update() método da postgresqlflexibleserver biblioteca.

Usando o update método, você pode atualizar a versão, o nome de usuário do administrador, a senha e outras propriedades.

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

Execute o arquivo Java e examine as alterações feitas no recurso usando o UpdateServer.java arquivo.

Limpar os recursos

Você pode limpar os servidores flexíveis criados excluindo o servidor flexível com o delete() método da postgresqlflexibleserver biblioteca.

Crie um arquivo DeleteServer.java e adicione o seguinte 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");
 }

}

Substitua os seguintes parâmetros com seus dados:

  • subscription-id: Sua própria ID da assinatura.
  • resource-group: O nome do grupo de recursos que você deseja usar.
  • tenant-id : a ID do locatário da sua conta do Microsoft Entra. Você pode obter isso no portal ou usando a CLI.
  • server-name: o nome do servidor flexível do banco de dados Azure que você criou.

Você também pode excluir o grupo de recursos criado por meio do portal, da CLI ou do PowerShell. Se você quiser excluí-lo usando a CLI ou o PowerShell, siga as etapas mencionadas na seção da CLI e do PowerShell.

Substitua os espaços reservados pelos seus dados e execute o arquivo.

Como alternativa, você pode remover o grupo de recursos usando:

  • CLI do Azure: az group delete --name <resource_group>
  • PowerShell:Remove-AzResourceGroup -Name <resource_group>
  • Portal do Azure: Navegue até o grupo de recursos e exclua-o.