Создание гибкого сервера База данных Azure для PostgreSQL с помощью Azure SDK для Java

Из этого краткого руководства вы узнаете, как создавать, обновлять и удалять гибкий сервер База данных Azure для PostgreSQL с помощью Azure SDK для Java. Примеры кода написаны на Java и используют библиотеки пакета SDK Azure для взаимодействия со службой Базы данных Azure для PostgreSQL.

Azure SDK для Java предоставляет набор библиотек, которые можно использовать для взаимодействия со службами Azure с помощью Java. Пакет SDK предоставляет согласованную модель программирования и упрощает работу со службами Azure, включая базу данных Azure для PostgreSQL.

Необходимые условия

Операции, поддерживаемые Azure Java SDK

Azure SDK для Java предоставляет azure-resourcemanager-postgresqlflexibleserver зависимость, которая поддерживает эти операции для баз данных Azure для PostgreSQL.

  • Создание гибких серверов База данных Azure для PostgreSQL
    Вы можете создать гибкий сервер Azure PostgreSQL с указанными конфигурациями, такими как расположение, номер SKU, хранилище и версия.

  • Обновление гибких серверов База данных Azure для PostgreSQL
    Вы можете обновить существующие гибкие серверы Azure PostgreSQL, включая изменение конфигураций, таких как вход администратора, пароль, номер SKU, хранилище и версия.

  • Удаление гибких серверов База данных Azure для PostgreSQL

  • Получение сведений о базе данных Azure для PostgreSQL
    Вы можете получить сведения о существующих гибких серверах Azure PostgreSQL, включая их конфигурации, состояние и другие метаданные.

  • Управление базами данных
    Вы можете создавать, обновлять, удалять и извлекать базы данных на гибком сервере Azure PostgreSQL.

  • Управление правилами брандмауэра
    Вы можете создавать, обновлять, удалять и извлекать правила брандмауэра для экземпляра для управления доступом.

  • Управление параметрами конфигурации
    Вы можете управлять параметрами конфигурации гибкого сервера Azure PostgreSQL, включая получение и обновление параметров.

Настройка учетной записи с помощью Azure CLI

Прежде чем использовать Azure SDK для Java для создания, обновления или удаления гибкого сервера База данных Azure для PostgreSQL, войдите в учетную запись Azure с помощью Azure CLI.

Войдите в свою учетную запись с помощью Azure CLI.

az login

Получите идентификатор арендатора для своей учетной записи, так как он понадобится для кода в следующем разделе.

az account show --query tenantId --output tsv

Создание проекта

Создайте проект Maven в предпочтительной интегрированной среде разработки и добавьте зависимости для библиотеки Базы данных Azure для PostgreSQL.

При создании проекта Maven создается pom.xml файл. Убедитесь, что вы добавили все зависимости под тегом <dependencies> в этом файле.

<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

Прежде чем добавлять их в файл, проверьте последнюю версию всех зависимостей.

Создание экземпляра Базы данных Azure для PostgreSQL

Чтобы создать гибкий сервер Azure PostgreSQL, создайте файл с именем CreateServer.java со следующим кодом.

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

В этом примере показано создание гибкого сервера экземпляра Базы данных Azure для PostgreSQL с помощью PostgreSqlManager класса. Перед вызовом метода создания он проходит проверку подлинности с помощью TokenCredential и AzureProfile. После проверки подлинности он определяет гибкий сервер Azure PostgreSQL с указанной конфигурацией.

Замените следующие параметры в коде данными:

  • subscription-id: идентификатор подписки Azure.
  • tenant-id : идентификатор клиента учетной записи Microsoft Entra. Это можно получить на портале или с помощью интерфейса командной строки.
  • resource-group-name: название вашей группы ресурсов.
  • server-name: уникальное имя сервера PostgreSQL.
  • location: регион Azure для сервера.
  • admin-username: имя администратора.
  • admin-password: пароль администратора.

Authentication

Вы можете аутентифицировать свои учетные данные разными способами. В этом примере используется DefaultAzureCredentialBuilder для настройки и создания объекта TokenCredential, который является учетными данными, которые можно использовать для проверки подлинности с помощью служб Azure. Войдите с помощью Azure CLI, как упоминалось в предварительных требованиях.

Запустите файл.

Создайте проект Maven и выполните следующие команды. Каждый раз, когда вы добавляете в файл новую зависимость, чтобы установить эту зависимость pom.xml в локальном репозитории, выполните следующие команды:

mvn clean install

Чтобы запустить файл, используйте интегрированную среду разработки для выполнения этого кода или с помощью командной строки для запуска файла Java.

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

Note

Выполнение этого кода инициирует процесс создания экземпляра, который может занять несколько минут.

Вы можете просмотреть развернутый гибкий сервер Azure PostgreSQL с помощью портала Azure, Azure CLI, Azure PowerShell и различных других средств для проверки развертывания и проверки развернутых ресурсов.

Создание базы данных

Вы можете добавить новую базу данных на только что созданный сервер. Убедитесь, что База данных Azure для PostgreSQL гибкий сервер запущен.

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

Обновление данных сервера

Создайте UpdateServer.java файл.

Вы также можете обновить данные сервера с помощью этого пакета SDK Java и вызова update() метода из библиотекиpostgresqlflexibleserver.

С помощью update метода можно обновить версию, имя пользователя администратора, пароль и другие свойства.

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

Запустите файл Java и просмотрите изменения, внесенные в ресурс, с помощью UpdateServer.java файла.

Очистите ресурсы

Вы можете удалить созданные гибкие серверы, удалив гибкий сервер с помощью метода delete() из библиотеки postgresqlflexibleserver.

DeleteServer.java Создайте файл и добавьте следующий код.

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

}

Замените следующие параметры данными:

  • subscription-id: собственный идентификатор подписки.
  • resource-group: имя группы ресурсов, которую вы хотите использовать.
  • tenant-id : идентификатор клиента учетной записи Microsoft Entra. Это можно получить на портале или с помощью интерфейса командной строки.
  • server-name: имя созданного гибкого сервера базы данных Azure.

Вы также можете удалить группу ресурсов, созданную с помощью портала, интерфейса командной строки или PowerShell. Если вы хотите удалить его с помощью интерфейса командной строки или PowerShell, выполните действия, описанные в разделе CLI и PowerShell.

Замените заполнители своими сведениями и запустите файл.

Кроме того, можно удалить группу ресурсов с помощью следующих средств:

  • Azure CLI:az group delete --name <resource_group>
  • PowerShell: Remove-AzResourceGroup -Name <resource_group>
  • портал Azure. Перейдите к группе ресурсов и удалите ее.