Поделиться через


Запрос конечной точки хранилища BLOB-объектов с помощью библиотеки управления хранилища Azure

Конечная точка хранилища BLOB-объектов формирует базовый адрес для всех объектов в учетной записи хранения. При создании учетной записи хранения укажите тип конечной точки, которую вы хотите использовать. Хранилище BLOB-объектов поддерживает два типа конечных точек:

Когда ваше приложение создает объект клиента службы, который подключается к ресурсам данных объектного хранилища BLOB, вы передаете URI, ссылающийся на конечную точку, в конструктор клиента службы. Вы можете создать строку URI вручную или запросить конечную точку службы во время выполнения с помощью библиотеки управления хранилища Azure.

Это важно

При ссылке на конечную точку службы в клиентском приложении рекомендуется избегать использования зависимостей от кэшированного IP-адреса. IP-адрес учетной записи хранения может быть изменен, и использование кэшированного IP-адреса может привести к непредвиденному поведению.

CNAMEs, связанные с конечной точкой учетной записи хранения, могут изменяться без уведомления. Приложение не должно зависеть от количества записей CNAME или вложенных доменов, связанных с этими записями CNAME.

Кроме того, рекомендуется учитывать время жизни (TTL) записи DNS и не переопределять ее. Переопределение TTL для DNS может привести к неожиданному поведению.

Дополнительные сведения см. в записях CNAME, поддоменах и IP-адресах.

Библиотека управления службами хранилища Azure предоставляет программный доступ к поставщику ресурсов службы хранилища Azure. Поставщик ресурсов — это реализация службы хранилища Azure в Azure Resource Manager. Библиотека управления позволяет разработчикам управлять учетными записями хранения и конфигурацией учетной записи, а также настраивать политики управления жизненным циклом, политики репликации объектов и политики неизменяемости.

Из этой статьи вы узнаете, как запросить конечную точку хранилища BLOB-объектов с помощью библиотеки управления хранилищем Azure. Затем вы используете эту конечную BlobServiceClient точку для создания объекта, чтобы соединиться с ресурсами данных Blob-хранилища.

Настройка проекта

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

Установка пакетов

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

Установите следующие пакеты с помощью dotnet add package:

dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager.Storage
dotnet add package Azure.Storage.Blobs

Настройка кода приложения

Добавьте необходимые using или import директивы в код. Обратите внимание, что примеры кода могут разделить функциональные возможности между файлами, но в этом разделе перечислены все директивы вместе.

Затем добавьте следующие using директивы:

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;

Сведения о клиентской библиотеке:

  • Azure.Identity: обеспечивает поддержку проверки подлинности маркера Microsoft Entra в пакете SDK Azure и требуется для подключений без пароля к службам Azure.
  • Azure.ResourceManager.Storage: поддерживает управление ресурсами службы хранилища Azure, включая группы ресурсов и учетные записи хранения.
  • Azure.Storage.Blobs: содержит основные классы, которые можно использовать для работы с ресурсами хранилища BLOB-объектов.

Зарегистрируйте поставщика ресурсов хранилища в подписке.

Ваш подписчик 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. Это разрешение включено в роли участника и владельца.

Запрос конечной точки хранилища Blob

Чтобы получить конечную точку хранилища BLOB-объектов для данной учетной записи хранения, необходимо получить свойства учетной записи хранения, вызвав операцию Get Properties . В следующих примерах кода используются библиотеки доступа к данным и управления для получения конечной точки Blob-хранилища для указанной учетной записи хранилища.

Чтобы получить свойства для указанной учетной записи хранения, используйте следующий метод из объекта StorageAccountCollection :

Этот метод возвращает объект StorageAccountResource , представляющий учетную запись хранения.

public static async Task<Uri> GetBlobServiceEndpoint(
    string storageAccountName,
    TokenCredential credential)
{
    // TODO: replace with your subscription ID and resource group name
    // You can locate your subscription ID on the Subscriptions blade
    // of the Azure portal (https://portal.azure.com)
    const string subscriptionId = "<subscription-id>";
    const string rgName = "<resource-group-name>";

    ArmClient armClient = new(credential);

    // Create a resource identifier, then get the subscription resource
    ResourceIdentifier resourceIdentifier = new($"/subscriptions/{subscriptionId}");
    SubscriptionResource subscription = armClient.GetSubscriptionResource(resourceIdentifier);

    // Get a resource group
    ResourceGroupResource resourceGroup = await subscription.GetResourceGroupAsync(rgName);

    // Get a collection of storage account resources
    StorageAccountCollection accountCollection = resourceGroup.GetStorageAccounts();

    // Get the properties for the specified storage account
    StorageAccountResource storageAccount = await accountCollection.GetAsync(storageAccountName);

    // Return the primary endpoint for the blob service
    return storageAccount.Data.PrimaryEndpoints.BlobUri;
}

Создание клиентского объекта с помощью конечной точки

Получив конечную точку хранилища BLOB-объектов для учетной записи хранения, можно создать экземпляр клиентского объекта для работы с ресурсами данных. В следующем примере кода создается объект с использованием конечной точки BlobServiceClient, полученной в предыдущем примере.

// Create an instance of DefaultAzureCredential for authorization
TokenCredential credential = new DefaultAzureCredential();

// TODO: replace with your storage account name
string storageAccountName = "<storage-account-name>";

// Call out to our function that retrieves the blob service endpoint for the given storage account
Uri blobURI = await AccountProperties.GetBlobServiceEndpoint(storageAccountName, credential);
Console.WriteLine($"URI: {blobURI}");

// Now that we know the endpoint, create the client object
BlobServiceClient blobServiceClient = new(blobURI, credential);

// Do something with the storage account or its resources ...

Дальнейшие действия

Просмотрите полные примеры кода (GitHub):

Дополнительные сведения о создании клиентских объектов см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.