开始使用适用于 .NET 的 Azure 存储管理库
本文介绍如何使用适用于 .NET 的 Azure 存储管理库连接到 Azure 存储资源。 连接后,可以创建、更新和删除存储帐户,以及管理存储帐户设置。 若要了解使用 Azure 存储客户端库进行资源管理和数据访问的差异,请参阅“Azure 存储客户端库概述”。
API 参考 | NuGet | GitHub | 提供反馈
先决条件
设置项目
本部分指导你逐步准备一个项目,使其与适用于 .NET 的 Azure 存储管理库配合使用。
从项目目录中,使用 dotnet add package
命令安装 Azure 存储资源管理器的包和 Azure 标识客户端库的包。 与 Azure 服务的无密码连接需要 azure-identity 包。
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager.Storage
将这些 using
指令添加到代码文件的顶部:
using Azure.Identity;
using Azure.ResourceManager;
管理库信息:
- Azure.ResourceManager.Storage:包含表示用于管理存储帐户的集合、资源和数据的主类。
授予访问权限并创建客户端
若要连接应用程序并管理存储帐户资源,请创建 ArmClient 对象。 此客户端对象是所有 Azure 资源管理器 (ARM) 客户端的入口点。 由于所有管理 API 都经过同一终结点,因此只需创建一个顶级 ArmClient
即可与资源交互。
通过 Azure RBAC 分配管理权限
Azure 提供用于授权调用管理操作的内置角色。 Azure 存储还提供专用于 Azure 存储资源提供程序的内置角色。 有关详细信息,请参阅“管理操作的内置角色”。
使用 DefaultAzureCredential 授权访问
你可以使用 Microsoft Entra 授权令牌来向 ArmClient
对象授权。 在本文的代码示例中,我们使用 DefaultAzureCredential
来向客户端对象授权。 DefaultAzureCredential
类为将部署到 Azure 的应用程序提供默认的 TokenCredential
身份验证流。 若要了解详细信息,请参阅 DefaultAzureCredential。
若要通过 Microsoft Entra ID 授权,需要使用安全主体。 需要的安全主体类型取决于应用程序的运行位置。 使用下表作为指南:
应用程序的运行位置 | 安全主体 | 指南 |
---|---|---|
本地计算机(开发和测试) | 服务主体 | 若要了解如何注册应用、设置 Microsoft Entra 组、分配角色和配置环境变量,请参阅使用开发人员服务主体授权访问 |
本地计算机(开发和测试) | 用户标识 | 若要了解如何设置 Microsoft Entra 组、分配角色和登录到 Azure,请参阅使用开发人员凭据授权访问 |
在 Azure 中托管 | 托管标识 | 若要了解如何启用托管标识和分配角色,请参阅使用托管标识授权从 Azure 托管应用访问 |
托管在 Azure 外部(例如本地应用) | 服务主体 | 若要了解如何注册应用、分配角色和配置环境变量,请参阅使用应用程序服务主体授权从本地应用访问 |
若要授予访问权限并连接到存储帐户资源,一种简单且安全的方法是通过创建 DefaultAzureCredential 实例来获取 OAuth 令牌。 然后,你可以使用该凭据创建 ArmClient 对象。
以下示例会创建一个使用 DefaultAzureCredential
授权的 ArmClient
对象,然后获取指定订阅 ID 的订阅资源:
ArmClient armClient = new ArmClient(new DefaultAzureCredential(), new ArmClientOptions { Environment = ArmEnvironment.AzureChina });
// Create a resource identifier, then get the subscription resource
ResourceIdentifier resourceIdentifier = new($"/subscriptions/{subscriptionId}");
SubscriptionResource subscription = armClient.GetSubscriptionResource(resourceIdentifier);
如果你准确地知道将用于对用户进行身份验证的凭据类型,可以使用适用于 .NET 的 Azure 标识客户端库中的其他类获取 OAuth 令牌。 这些类派生自 TokenCredential 类。
若要了解有关授权管理操作的详细信息,请参阅“使用 Azure RBAC 分配管理权限”。
在订阅中注册存储资源提供程序
必须先在 Azure 订阅中注册资源提供程序,然后才能使用它。 只需为每个订阅执行一次此步骤,并且仅当资源提供程序 Microsoft.Storage 当前未在订阅中注册时才适用。
可以使用 Azure 门户、Azure CLI 或 Azure PowerShell 注册存储资源提供程序或检查注册状态。
你还可以使用 Azure 管理库来检查注册状态并注册存储资源提供程序,如以下示例所示:
public static async Task RegisterSRPInSubscription(SubscriptionResource subscription)
{
ResourceProviderResource resourceProvider =
await subscription.GetResourceProviderAsync("Microsoft.Storage");
// Check the registration state of the resource provider and register, if needed
if (resourceProvider.Data.RegistrationState == "NotRegistered")
resourceProvider.Register();
}
注意
若要执行注册操作,需要具有以下 Azure RBAC 操作的相关权限:Microsoft.Storage/register/action。 此权限包含在“参与者”和“所有者”内置角色中。
创建用于管理存储帐户资源的客户端
创建 ArmClient
对象并注册存储资源提供程序后,可以在资源组和存储帐户级别创建客户端对象。 以下代码示例演示如何为给定资源组和存储帐户创建客户端对象:
// Get a resource group
ResourceGroupResource resourceGroup = await subscription.GetResourceGroupAsync(rgName);
// Get a collection of storage account resources
StorageAccountCollection accountCollection = resourceGroup.GetStorageAccounts();
// Get a specific storage account resource
StorageAccountResource storageAccount = await accountCollection.GetAsync(storageAccountName);
了解客户端资源层次结构
为了减少执行常见任务所需的客户端数量以及这些客户端采用的冗余参数数量,管理 SDK 提供了反映 Azure 中对象层次结构的对象层次结构。 SDK 中的每个资源客户端都有访问其子项的资源客户端的方法,这些客户端的范围已经限定为适当的订阅和资源组。
每个资源类型都有三个标准级别的层次结构。 对于存储帐户资源,层次结构如下所示:
- StorageAccountCollection:表示可以对属于特定父资源的存储帐户集合(例如资源组)执行的操作。
- StorageAccountResource:表示完整的存储帐户客户端对象,并包含“数据”属性,该属性将详细信息公开为
StorageAccountData
类型。 类实例可以访问该资源上的所有操作,而无需传入范围参数,例如订阅 ID 或资源名称。 - StorageAccountData:表示构成给定资源的模型。 通常,此类来自服务调用的响应数据,并提供有关资源的详细信息。
生成应用程序
以下指南演示如何使用适用于 .NET 的 Azure 存储管理库来管理资源并执行特定操作:
指南 | 说明 |
---|---|
管理存储帐户 | 了解如何创建和管理存储帐户、管理存储帐户密钥以及配置客户端选项以创建自定义重试策略。 |