使用 .NET Azure SDK 创建Azure Database for PostgreSQL灵活服务器

本快速入门介绍如何使用.NET中的Azure SDK库创建、更新和删除 Azure PostgreSQL 灵活服务器。 Azure Database for PostgreSQL 是一项托管服务,可用于在云中运行、管理和缩放高度可用的 PostgreSQL 数据库。 通过使用 .NET SDK,可以在服务器上预配Azure Database for PostgreSQL灵活服务器、多个服务器或多个数据库。

Prerequisites

Azure.ResourceManager.PostgreSql 库

Azure.ResourceManager.PostgreSql是.NET Azure SDK的一部分。 它提供了在 Azure 中管理 PostgreSQL 灵活服务器的功能。 使用此库,可以执行与 PostgreSQL 灵活服务器相关的各种操作,包括但不限于:

  • 创建 Azure PostgreSQL 灵活服务器
    可以使用指定配置(例如位置、SKU、存储和版本)创建新的灵活服务器。

  • 更新 Azure PostgreSQL 灵活服务器
    可以更新现有的 PostgreSQL 灵活服务器,包括更改管理员登录名、密码、SKU、存储和版本之类的配置。

  • 删除 Azure PostgreSQL 灵活服务器
    可以删除现有的 Azure PostgreSQL 灵活服务器。

  • 检索 Azure PostgreSQL 信息
    可以检索有关现有的 PostgreSQL 灵活服务器的详细信息,包括其配置、状态和其他元数据。

  • 管理数据库
    可以在 Azure PostgreSQL 灵活服务器中创建、更新、删除和检索数据库。

  • 管理防火墙规则
    可以为实例创建、更新、删除和检索防火墙规则来控制访问。

  • 管理配置设置
    可以管理 Azure PostgreSQL 灵活服务器的配置设置,包括检索和更新参数。

登录到 Azure

在使用.NET Azure SDK创建、更新或删除Azure Database for PostgreSQL灵活服务器之前,请使用Azure CLI登录到Azure帐户。

运行身份验证命令

使用 az CLI 向帐户进行身份验证。

az login

安装所需程序包

使用以下命令安装必要的包:

dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager
dotnet add package Azure.ResourceManager.PostgreSql

安装这些包后,请确保在执行生成并运行命令之前, .csproj 该文件中列出了每个包。

若要了解有关该文件的详细信息 .csproj ,请参阅 Web 部署

注释

如果存在与.NET的初始设置相关的问题,请参阅指南

创建项目

按照链接中所述的步骤创建新的.NET项目。

创建服务器

若要创建 PostgreSQL 灵活服务器,请创建包含以下代码的文件 CreateServer.cs

using System;
using System.Threading.Tasks;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.PostgreSql.FlexibleServers;
using Azure.ResourceManager.PostgreSql.FlexibleServers.Models;

namespace CreatePostgreSqlFlexibleServer
{
    class Program
 {
        static async Task Main(string[] args)
   {

            TokenCredential credential = new DefaultAzureCredential();
            ArmClient armClient = new ArmClient(credential, new ArmClientOptions { Environment = ArmEnvironment.AzureChina });
            // Replace with your subscription ID
            string subscriptionId = "subscription-id";
            // Replace with your resource group name
            string resourceGroupName = "resource-group-name";
           // Replace with a unique server name
            string serverName = "server-name";
           // Replace with your desired region
            string location = "region-name";
          // Create the resource identifier for the resource group
            ResourceIdentifier resourceGroupId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
            ResourceGroupResource resourceGroup = await armClient.GetResourceGroupResource(resourceGroupId).GetAsync();
            // Prepare server data
            var serverData = new PostgreSqlFlexibleServerData(location)
            {
              AdministratorLogin = "admin-username",
              AdministratorLoginPassword = "<admin-password>",
              Version = "pgVersion",
              Storage = new PostgreSqlFlexibleServerStorage() { StorageSizeInGB = 128 },
              Sku = new PostgreSqlFlexibleServerSku("Standard_B1ms", PostgreSqlFlexibleServerSkuTier.Burstable),
           };
            try
            {
               ArmOperation<PostgreSqlFlexibleServerResource> operation = await resourceGroup.GetPostgreSqlFlexibleServers().CreateOrUpdateAsync(Azure.WaitUntil.Completed, serverName, serverData);
              PostgreSqlFlexibleServerResource serverResource = operation.Value;
              Console.WriteLine($"PostgreSQL flexible server '{serverResource.Data.Name}' created successfully.");
           }
            catch (Exception ex)
            {
               Console.WriteLine($"An error occurred: {ex.Message}");
            }
   }
  }
}

此示例演示如何使用 Azure 资源管理器 创建 PostgreSQL 灵活服务器。 PostgreSql 库。 同样,你可以使用库提供的其他方法来管理 PostgreSQL 灵活服务器和相关资源。

将代码中的以下参数替换为你的数据:

  • subscription-id:Azure订阅 ID。
  • resource-group-name:资源组的名称。
  • server-name:PostgreSQL 服务器的唯一名称。
  • location:服务器的 Azure 区域。
  • admin-username:管理员用户名。
  • admin-password:管理员密码。
  • pgVersion:PostgreSQL 版本(例如 11、12、13、14、15 或 16)。

Authentication

DefaultAzureCredential类尝试使用环境变量、托管标识或Azure CLI等方法进行身份验证。 确保配置其中一种方法。

运行该文件

若要运行该文件,请使用 .NET CLI 生成和执行.cs文件。 此过程会根据代码启动 PostgreSQL 实例的创建、更新或删除。

每次更改.cs文件时,生成并运行该文件。

使用以下命令运行.cs文件:

dotnet build
dotnet run

注释

运行此代码将启动实例创建过程,此过程可能需要几分钟才能完成。

查看已部署的资源

若要验证部署并查看已部署的资源,请使用Azure门户、Azure CLI、Azure PowerShell和其他工具。

更新服务器数据

创建文件 UpdateServerData.cs

还可以使用 Azure PostgreSQL .NET SDK 更新服务器数据。

例如,可以使用该方法 CreateOrUpdateAsync 更新版本、管理员用户名、密码和其他设置。

CreateOrUpdateAsync如果没有具有相同名称的实例,则该方法会创建一个新实例,或者使用新服务器数据更新现有实例(如果存在)。

using System;
using System.Threading.Tasks;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.PostgreSql.FlexibleServers;
using Azure.ResourceManager.PostgreSql.FlexibleServers.Models;

namespace UpdateServerData
{
    class Program
 {
        static async Task Main(string[] args)
   {

            TokenCredential credential = new DefaultAzureCredential();
            ArmClient armClient = new ArmClient(credential, new ArmClientOptions { Environment = ArmEnvironment.AzureChina });
            // Replace with your subscription ID
            string subscriptionId = "subscription-id";
            // Replace with your resource group name
            string resourceGroupName = "resource-group-name";
            // Replace with a unique server name
            string serverName = "server-name";
            // Replace with your desired region
            string location = "region-name";
            ResourceIdentifier resourceGroupId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
            ResourceGroupResource resourceGroup = await armClient.GetResourceGroupResource(resourceGroupId).GetAsync();
            // Prepare server data
            var serverData = new PostgreSqlFlexibleServerData(location)
           {
              // Updating version from a lower version to a higher version
              Version = "16",
           };
            try
             {
               ArmOperation<PostgreSqlFlexibleServerResource> operation = await resourceGroup.GetPostgreSqlFlexibleServers().CreateOrUpdateAsync(Azure.WaitUntil.Completed, serverName, serverData);
               PostgreSqlFlexibleServerResource serverResource = operation.Value;
               Console.WriteLine($"PostgreSQL flexible server '{serverResource.Data.Name}' updated successfully.");
            }
            catch (Exception ex)
            {
              Console.WriteLine($"An error occurred: {ex.Message}");
            }
   }
  }
}

运行该文件,并使用 UpdateServerData.cs 文件查看资源中的更改。

清理资源

可以通过删除具有.NET Azure SDK的灵活服务器来清理创建的灵活服务器。

创建一个 DeleteServer.cs 文件,并添加以下代码。

using System;
using System.Threading.Tasks;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.PostgreSql.FlexibleServers;
using Azure.ResourceManager.PostgreSql.FlexibleServers.Models;

namespace DeleteServer
{
    class Program
  {
        static async Task Main(string[] args)
   {

            // Replace with your subscription ID
            string subscriptionId = "subscription-id";
            // Replace with your resource group name
            string resourceGroupName = "resource-group-name";
            // Replace with a unique server name
            string serverName = "server-name";
            var credential = new DefaultAzureCredential();
            var armClient = new ArmClient(credential, new ArmClientOptions { Environment = ArmEnvironment.AzureChina });
            try
            {
                // Get the PostgreSQL flexible server resource
                var postgresServerResourceId = PostgreSqlFlexibleServerResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, serverName);
                var postgresServer = armClient.GetPostgreSqlFlexibleServerResource(postgresServerResourceId);
                // Delete the server
                await postgresServer.DeleteAsync(Azure.WaitUntil.Completed);
                Console.WriteLine($"PostgreSQL flexible server '{serverName}' deleted successfully.");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"An error occurred: {ex.Message}");
            }
   }
  }
}

将以下参数替换为你自己的数据:

  • subscription-id:你自己的订阅 ID
  • resource-group-name:要使用的资源组的名称。 如果不存在,该脚本将创建新的资源组。
  • server-name:所创建的Azure数据库灵活服务器的名称。

还可以删除通过门户、CLI 或 PowerShell 创建的资源组。 如果要使用 CLI 或 PowerShell 将其删除,请按照 CLI 和 PowerShell 部分中提到的步骤操作。

将占位符替换为你的详细信息,然后运行该文件。

或者,可以使用以下命令删除资源组:

  • Azure CLI:az group delete --name <resource_group>
  • PowerShell:Remove-AzResourceGroup -Name <resource_group>
  • Azure 门户:导航到资源组并删除它。