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


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

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

  • Стандартная конечная точка включает уникальное имя учетной записи хранения вместе с фиксированным доменным именем. Формат стандартной конечной точки.https://<storage-account>.blob.core.windows.net
  • Конечная точка зоны Azure DNS (предварительная версия) динамически выбирает зону Azure DNS и назначает ее учетной записи хранения при его создании. Формат конечной точки зоны DNS Azure.https://<storage-account>.z[00-99].blob.storage.azure.net

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

Важно!

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

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

Кроме того, рекомендуется учитывать время жизни (TTL) записи DNS и не переопределять ее. Переопределение срока жизни 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. служба хранилища. Поддерживает управление ресурсами служба хранилища Azure, включая группы ресурсов и учетные записи хранения.
  • Azure. служба хранилища. Большие двоичные объекты: содержит основные классы, которые можно использовать для работы с ресурсами данных служба хранилища BLOB-объектов.

Регистрация поставщика ресурсов служба хранилища в подписке

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

Вы можете зарегистрировать поставщика ресурсов служба хранилища или проверка состояние регистрации с помощью портал 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.служба хранилища/register/action. Это разрешение включается в роли участника и владельца .

Запрос конечной точки служба хранилища BLOB-объекта

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

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

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

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

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

Получив конечную точку большого двоичного объекта служба хранилища для учетной записи хранения, можно создать экземпляр клиентского объекта для работы с ресурсами данных. В следующем примере кода создается объект с помощью конечной 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):

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