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