Rechercher un point de terminaison Stockage Blob à l’aide de la bibliothèque de gestion stockage Azure

Un point de terminaison Stockage Blob forme l’adresse de base pour tous les objets d’un compte de stockage. Lorsque vous créez un compte de stockage, vous spécifiez le type de point de terminaison que vous souhaitez utiliser. Stockage Blob prend en charge deux types de points de terminaison :

  • Un point de terminaison standard inclut le nom de compte de stockage unique ainsi qu’un nom de domaine fixe. Le format d’un point de terminaison standard est https://<storage-account>.blob.core.windows.net.
  • Un point de terminaison de zone DNS Azure (préversion) sélectionne dynamiquement une zone DNS Azure et l’associe au compte de stockage au moment de sa création. Le format d’un point de terminaison de zone Azure DNS est https://<storage-account>.z[00-99].blob.storage.azure.net.

Lorsque votre application crée un objet client de service qui se connecte à Stockage Blob ressources de données, vous transmettez un URI référençant le point de terminaison au constructeur client de service. Vous pouvez construire la chaîne d’URI manuellement, ou vous pouvez interroger le point de terminaison de service au moment de l’exécution à l’aide de la bibliothèque de gestion stockage Azure.

Important

Lors du référencement d’un point de terminaison de service dans une application cliente, nous vous recommandons d’éviter de prendre une dépendance sur une adresse IP mise en cache. L’adresse IP du compte de stockage est susceptible de changer et le fait de s’appuyer sur une adresse IP mise en cache peut entraîner un comportement inattendu.

Les CNAMEs associés à un point de terminaison de compte de stockage peuvent changer sans préavis. Votre application ne doit pas dépendre du nombre d’enregistrements CNAME ou des sous-domaines associés à ces enregistrements CNAME.

De plus, il est recommandé de respecter la durée de vie (TTL) de l’enregistrement DNS et d’éviter de le remplacer. La substitution de la durée de vie du DNS peut entraîner un comportement inattendu.

Pour plus d’informations, consultez les enregistrements CNAME, les sous-domaines et les adresses IP.

La bibliothèque de gestion stockage Azure fournit un accès programmatique au fournisseur de ressources stockage Azure. Le fournisseur de ressources est l’implémentation stockage Azure du Azure Resource Manager. La bibliothèque de gestion permet aux développeurs de gérer les comptes de stockage et la configuration des comptes, ainsi que de configurer des stratégies de gestion du cycle de vie, des stratégies de réplication d’objets et des stratégies d’immuabilité.

Dans cet article, vous allez apprendre à interroger un point de terminaison Stockage Blob à l’aide de la bibliothèque de gestion stockage Azure. Ensuite, vous utilisez ce point de terminaison pour créer un objet BlobServiceClient afin de vous connecter aux ressources de données de Stockage Blob.

Configuration de votre projet

Pour utiliser les exemples de code de cet article, effectuez les étapes suivantes pour configurer votre projet.

Installer des packages

Installez des packages pour utiliser les bibliothèques utilisées dans cet exemple.

Installez les packages suivants en utilisant dotnet add package :

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

Configurer le code d’application

Ajoutez les directives nécessaires using ou import au code. Notez que les exemples de code peuvent fractionner les fonctionnalités entre les fichiers, mais dans cette section, toutes les directives sont répertoriées ensemble.

Ajoutez les directives using suivantes :

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

Informations sur la bibliothèque cliente :

  • Azure.Identity : fournit la prise en charge de l’authentification par jeton Microsoft Entra dans l’ensemble du SDK Azure et est nécessaire pour les connexions sans mot de passe aux services Azure.
  • Azure. ResourceManager.Storage : prend en charge la gestion des ressources stockage Azure, y compris les groupes de ressources et les comptes de stockage.
  • Azure. Storage.Blobs : contient les classes principales que vous pouvez utiliser pour utiliser Stockage Blob ressources de données.

Inscrire le fournisseur de ressources Stockage dans un abonnement

Un fournisseur de ressources doit être inscrit dans votre abonnement Azure pour que vous puissiez l’utiliser. Cette étape doit être effectuée une seule fois par abonnement et s’applique uniquement si le fournisseur de ressources Microsoft. Le stockage n’est actuellement pas inscrit auprès de votre abonnement.

Vous pouvez inscrire le fournisseur de ressources Stockage ou vérifier l’état de l’inscription à l’aide de Portail Azure, d’Azure CLI ou d’Azure PowerShell.

Vous pouvez également utiliser les bibliothèques de gestion Azure pour vérifier l’état de l’inscription et inscrire le fournisseur de ressources de stockage, comme indiqué dans les exemples suivants :

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

Note

Pour effectuer l’opération d’enregistrement, vous devez disposer des autorisations nécessaires pour l’action Azure RBAC suivante : Microsoft.Storage/register/action. Cette autorisation est incluse dans les rôles Contributeur et Propriétaire .

Requête pour le point de terminaison Stockage Blob

Pour récupérer le point de terminaison Stockage Blob pour un compte de stockage donné, nous devons obtenir les propriétés du compte de stockage en appelant l’opération Get Properties. Les exemples de code suivants utilisent les bibliothèques d’accès aux données et de gestion pour obtenir un point de terminaison Stockage Blob pour un compte de stockage spécifié :

Pour obtenir les propriétés d’un compte de stockage spécifié, utilisez la méthode suivante à partir d’un objet StorageAccountCollection :

Cette méthode retourne un objet StorageAccountResource , qui représente le compte de stockage.

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

Créer un objet client à l’aide du point de terminaison

Une fois que vous disposez du point de terminaison Stockage Blob pour un compte de stockage, vous pouvez instancier un objet client pour travailler avec des ressources de données. L’exemple de code suivant crée un BlobServiceClient objet à l’aide du point de terminaison que nous avons récupéré dans l’exemple précédent :

// 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 ...

Étapes suivantes

Affichez les exemples de code complets (GitHub) :

Pour en savoir plus sur la création d’objets clients, consultez Créer et gérer des objets clients qui interagissent avec les ressources de données.