Crie um servidor flexível Base de Dados do Azure para PostgreSQL usando o SDK do Azure for Java

Neste quickstart, aprende a criar, atualizar e eliminar um servidor flexível Base 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 pode usar para interagir com os serviços do 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 suportadas pelo SDK Java do Azure

O SDK do Azure for Java fornece a azure-resourcemanager-postgresqlflexibleserver dependência que suporta estas operações para as bases de dados Azure para PostgreSQL.

  • Criar servidores flexíveis do Base de Dados do Azure para PostgreSQL
    Pode criar um novo servidor flexível Azure PostgreSQL com configurações específicas como localização, SKU, armazenamento e versão.

  • Updating Base de Dados do Azure para PostgreSQL flexible servers
    Pode atualizar os servidores flexíveis Azure PostgreSQL existentes, incluindo alterações de configurações como login de administrador, palavra-passe, SKU, armazenamento e versão.

  • Eliminar servidores flexíveis do Base de Dados do Azure para PostgreSQL

  • Recuperando informações do Banco de Dados do Azure para PostgreSQL
    Pode obter detalhes sobre os servidores flexíveis Azure PostgreSQL existentes, incluindo as suas configurações, estado e outros metadados.

  • Gerenciando bancos de dados
    Pode criar, atualizar, eliminar e recuperar bases de dados dentro do 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 definições de configuração
    Pode gerir as definições de configuração de um servidor flexível Azure PostgreSQL, incluindo a recuperação e atualização de parâmetros.

Configure a sua conta usando o CLI do Azure

Antes de usar o SDK do Azure for Java para criar, atualizar ou eliminar um servidor flexível do Base de Dados do Azure para PostgreSQL, inicie sessão na sua conta Azure usando a CLI do Azure.

Inicie sessão na sua conta usando o CLI do Azure.

az login

Solicite o seu ID de inquilino para a sua conta, pois precisa dele para o código na secção seguinte.

az account show --query tenantId --output tsv

Criar projeto

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

Quando crias um projeto Maven, crias um pom.xml ficheiro. Certifica-te de que adicionas todas as dependências sob a tag deste <dependencies> ficheiro.

<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 para todas as dependências antes de adicioná-las ao seu arquivo.

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

Para criar um servidor flexível Azure PostgreSQL, crie um ficheiro com o seguinte CreateServer.java código.

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 Banco de Dados do Azure para servidor de instância flexível PostgreSQL usando a PostgreSqlManager classe. Antes de invocar o método create, autentica-se usando o TokenCredential e AzureProfile. Uma vez autenticado, define o servidor flexível Azure PostgreSQL com a sua configuração especificada.

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

  • subscription-id: Sua ID de assinatura do Azure.
  • tenant-id : O ID do inquilino da sua conta da Microsoft Entra. Pode obter isto através do portal ou utilizando a interface de linha de comandos.
  • resource-group-name: O nome do teu 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 palavra-passe do administrador.

Authentication

Pode autenticar as suas credenciais de diferentes formas. Neste exemplo, use DefaultAzureCredentialBuilder para configurar e criar um objeto TokenCredential, que é uma credencial que pode usar para autenticar com os serviços do Azure. Inicie sessão usando CLI do Azure, conforme mencionado nos pré-requisitos.

Executar o ficheiro

Certifique-se de criar um projeto Maven e executar os seguintes comandos. Execute estes comandos sempre que adicionar uma nova dependência no seu pom.xml ficheiro para instalar essa dependência no seu repositório local:

mvn clean install

Para executar o ficheiro, usa o teu IDE para executar este código ou usa a linha de comandos para executar o ficheiro Java.

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

Note

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

Pode consultar o servidor flexível Azure PostgreSQL implementado através do portal Azure, CLI do Azure, Azure PowerShell e várias outras ferramentas para validar a implementação e rever os recursos implementados.

Criar uma base de dados

Você pode adicionar um novo banco de dados ao servidor recém-criado. Certifique-se de que o seu servidor flexível Base de Dados do Azure para PostgreSQL está a funcionar.

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 dados do servidor

Crie um ficheiro UpdateServer.java.

Também pode atualizar os dados do servidor usando este SDK Java e chamando o update() método a partir da postgresqlflexibleserver biblioteca.

Ao usar o update método, pode atualizar a versão, o nome de utilizador do administrador, a palavra-passe 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");
 }
}

Executa o ficheiro Java e revê as alterações feitas no recurso usando o UpdateServer.java ficheiro.

Limpeza de recursos

Podes limpar os servidores flexíveis criados eliminando o servidor flexível com o delete() método da postgresqlflexibleserver biblioteca.

Crie um DeleteServer.java arquivo e adicione o código a seguir.

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 pelos seus dados:

  • subscription-id: O seu próprio ID da subscrição.
  • resource-group: O nome do grupo de recursos que você deseja usar.
  • tenant-id : O ID do inquilino da sua conta da Microsoft Entra. Pode obtê-lo a partir do portal ou utilizando a CLI.
  • server-name: O nome do servidor flexível da base de dados Azure que criou.

Também pode eliminar o grupo de recursos criado através do portal, CLI ou PowerShell. Se quiseres apagá-lo usando CLI ou PowerShell, segue os passos mencionados na secção CLI e PowerShell.

Substitua os marcadores de posição pelos seus dados e execute o ficheiro.

Em alternativa, pode remover o grupo de recursos utilizando:

  • 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.