Java için Azure SDK kullanarak PostgreSQL için Azure Veri Tabanı esnek sunucu oluşturma

Bu hızlı başlangıçta, Java için Azure SDK kullanarak PostgreSQL için Azure Veri Tabanı esnek sunucu oluşturmayı, güncelleştirmeyi ve silmeyi öğreneceksiniz. Kod örnekleri Java dilinde yazılır ve PostgreSQL için Azure Veritabanı hizmetiyle etkileşime geçmek için Azure SDK kitaplıklarını kullanır.

Java için Azure SDK, Java kullanarak Azure hizmetleriyle etkileşim kurmak için kullanabileceğiniz bir kitaplık kümesi sağlar. SDK tutarlı bir programlama modeli sağlar ve PostgreSQL için Azure Veritabanı da dahil olmak üzere Azure hizmetleriyle çalışmayı kolaylaştırır.

Prerequisites

Azure Java SDK tarafından desteklenen işlemler

Java için Azure SDK, PostgreSQL için Azure Veritabanları için bu işlemleri destekleyen bağımlılığı sağlarazure-resourcemanager-postgresqlflexibleserver.

  • PostgreSQL için Azure Veri Tabanı esnek sunucularını oluşturma
    Konum, SKU, depolama ve sürüm gibi belirtilen yapılandırmalara sahip yeni bir Azure PostgreSQL esnek sunucusu oluşturabilirsiniz.

  • PostgreSQL için Azure Veri Tabanı esnek sunucularını güncelleme
    Yönetici oturum açma, parola, SKU, depolama ve sürüm gibi yapılandırmaları değiştirme dahil olmak üzere mevcut Azure PostgreSQL esnek sunucularını güncelleştirebilirsiniz.

  • PostgreSQL için Azure Veri Tabanı esnek sunucuları silme

  • PostgreSQL için Azure Veritabanı bilgilerini alma
    Mevcut Azure PostgreSQL esnek sunucularıyla ilgili yapılandırmaları, durumları ve diğer meta verileri de dahil olmak üzere ayrıntıları alabilirsiniz.

  • Veritabanlarını yönetme
    Azure PostgreSQL esnek sunucusunda veritabanları oluşturabilir, güncelleştirebilir, silebilir ve alabilirsiniz.

  • Güvenlik duvarı kurallarını yönetme
    Erişimi denetlemek için bir örneğin güvenlik duvarı kurallarını oluşturabilir, güncelleştirebilir, silebilir ve alabilirsiniz.

  • Yapılandırma ayarlarını yönetme
    Parametreleri alma ve güncelleştirme dahil olmak üzere Azure PostgreSQL esnek sunucusunun yapılandırma ayarlarını yönetebilirsiniz.

Azure CLI kullanarak hesabınızı ayarlama

PostgreSQL için Azure Veri Tabanı esnek sunucu oluşturmak, güncelleştirmek veya silmek için Java Azure SDK kullanmadan önce Azure CLI kullanarak Azure hesabınızda oturum açın.

Azure CLI kullanarak hesabınızda oturum açın.

az login

Sonraki bölümdeki kod için ihtiyaç duyduğunuz şekilde hesabınız için kiracı kimliğinizi getirin.

az account show --query tenantId --output tsv

Proje oluşturma

Tercih ettiğiniz IDE'de yeni bir Maven projesi oluşturun ve PostgreSQL için Azure Veritabanı kitaplığının bağımlılıklarını ekleyin.

Maven projesi oluşturduğunuzda, bir pom.xml dosya oluşturursunuz. Bu dosyanın etiketinin altına tüm bağımlılıkları eklediğinizden <dependencies> emin olun.

<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

Tüm bağımlılıkları dosyanıza eklemeden önce en son sürümü denetleyin.

PostgreSQL için Azure Veritabanı örneği oluşturma

Azure PostgreSQL esnek sunucusu oluşturmak için aşağıdaki kodla adlı CreateServer.java bir dosya oluşturun.

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

Bu örnekte, PostgreSqlManager class'ını kullanarak, PostgreSQL için Azure Veritabanı için esnek örnek sunucu oluşturma işlemi gösterilmektedir. Oluşturma yöntemini çağırmadan önce TokenCredential ve AzureProfile kullanarak kimlik doğrulaması yapar. Kimlik doğrulamasından sonra, belirtilen yapılandırmanızla Azure PostgreSQL esnek sunucusunu tanımlar.

Koddaki aşağıdaki parametreleri verilerinizle değiştirin:

  • subscription-id: Azure abonelik kimliğiniz.
  • tenant-id : Microsoft Entra hesabınızın kiracı kimliği. Bunu portaldan veya CLI kullanarak alabilirsiniz.
  • resource-group-name: Kaynak grubunuzun adı.
  • server-name: PostgreSQL sunucunuz için benzersiz bir ad.
  • location: Sunucunuz için Azure bölgesi.
  • admin-username: Yönetici kullanıcı adı.
  • admin-password: Yönetici parolası.

Authentication

Kimlik bilgilerinizi farklı yollarla doğrulayabilirsiniz. Bu örnekte, Azure hizmetleriyle kimlik doğrulaması yapmak için kullanabileceğiniz bir kimlik bilgisi olan TokenCredential nesnesini yapılandırmak ve oluşturmak için kullanınDefaultAzureCredentialBuilder. Önkoşullarda belirtildiği gibi Azure CLI kullanarak oturum açın.

Dosyayı çalıştırma

Bir Maven projesi oluşturduğunuzdan ve aşağıdaki komutları yürüttüğünden emin olun. Bu bağımlılığı yerel deponuza yüklemek için dosyanıza pom.xml her yeni bağımlılık eklediğinizde şu komutları çalıştırın:

mvn clean install

Dosyayı çalıştırmak için IDE'nizi kullanarak bu kodu çalıştırın veya komut satırını kullanarak Java dosyasını çalıştırın.

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

Note

Bu kodu çalıştırmak, bir örnek oluşturma sürecini başlatır ve tamamlanması birkaç dakika sürebilir.

Dağıtımı doğrulamak ve dağıtılan kaynakları gözden geçirmek için Azure portalı, Azure CLI, Azure PowerShell ve diğer çeşitli araçlar aracılığıyla dağıtılan Azure PostgreSQL esnek sunucusunu gözden geçirebilirsiniz.

veritabanı oluşturun

Yeni oluşturduğunuz sunucuya yeni bir veritabanı ekleyebilirsiniz. PostgreSQL için Azure Veri Tabanı esnek sunucunuzun çalıştığından emin olun.

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

Sunucu verilerini güncelleştirme

Bir UpdateServer.java dosya oluşturun.

Ayrıca bu Java SDK'sını kullanarak ve postgresqlflexibleserver kitaplığındaki update() yöntemini çağırarak sunucu verilerini güncelleyebilirsiniz.

yöntemini kullanarak update sürümü, yönetici kullanıcı adını, parolayı ve diğer özellikleri güncelleştirebilirsiniz.

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 dosyasını çalıştırın ve dosyayı kullanarak UpdateServer.java kaynakta yapılan değişiklikleri gözden geçirin.

Kaynakları temizle

postgresqlflexibleserver kitaplığındaki delete() yöntemiyle oluşturulan esnek sunucuları silerek temizleyebilirsiniz.

Bir DeleteServer.java dosya oluşturun ve aşağıdaki kodu ekleyin.

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

}

Aşağıdaki parametreleri verilerinizle değiştirin:

  • subscription-id: Kendi abonelik kimliğiniz.
  • resource-group: Kullanmak istediğiniz kaynak grubunun adı.
  • tenant-id : Microsoft Entra hesabınızın kiracı kimliği. Bunu portaldan veya CLI kullanarak alabilirsiniz.
  • server-name: Oluşturduğunuz Azure veritabanı esnek sunucusunun adı.

Portal, CLI veya PowerShell aracılığıyla oluşturulan kaynak grubunu da silebilirsiniz. CLI veya PowerShell kullanarak silmek istiyorsanız, CLI ve PowerShell bölümünde belirtilen adımları izleyin.

Yer tutucuları ayrıntılarınızla değiştirin ve dosyayı çalıştırın.

Alternatif olarak, aşağıdakini kullanarak kaynak grubunu kaldırabilirsiniz:

  • Azure CLI:az group delete --name <resource_group>
  • PowerShell:Remove-AzResourceGroup -Name <resource_group>
  • Azure portalı: Kaynak grubuna gidin ve silin.