Partager via


Interroger un point de terminaison Stockage Blob en tirant parti de la bibliothèque de gestion Stockage Azure

Un point de terminaison Stockage Blob forme l’adresse de base pour tous les objets au sein 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 point 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 Azure DNS (préversion) sélectionne dynamiquement une zone Azure DNS et l’affecte au compte de stockage lors 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 aux ressources de données Stockage Blob, vous passez un URI faisant référence au point de terminaison au constructeur du 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 en tirant parti 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 enregistrements CNAME, sous-domaines et adresses IP.

La bibliothèque de gestion Stockage Azure fournit un accès par programmation au Fournisseur de ressources Stockage Azure. Le fournisseur de ressources est l’implémentation Stockage Azure de Resource Manager Azure. La bibliothèque de gestion permet aux développeurs de gérer des comptes de stockage et une configuration de 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, découvrez comment interroger un point de terminaison Stockage Blob en tirant parti de la bibliothèque de gestion Stockage Azure. Ensuite, vous utilisez ce point de terminaison pour créer un objet BlobServiceClient pour 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 travailler avec 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 using ou import nécessaires au code. Notez que les exemples de code peuvent fractionner des fonctionnalités entre des 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 de client :

  • Azure.Identity : fournit une prise en charge de l’authentification par jeton Microsoft Entra dans le Kit de développement logiciel (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 des groupes de ressources et des comptes de stockage.
  • Azure.Storage.Blobs : contient les classes primaires que vous pouvez utiliser pour travailler avec des ressources de données de Stockage Blob.

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 ne doit être effectuée qu’une seule fois par abonnement et ne s’applique que si le fournisseur de ressources Microsoft.Storage n’est pas actuellement inscrit dans 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 Stockage, comme illustré 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();
}

Notes

Pour effectuer l’opération d’inscription, vous avez besoin d’autorisations pour l’action RBAC Azure 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

Dans le but de 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 Obtenir les propriétés. Les exemples de code suivants utilisent à la fois les bibliothèques d’accès aux données et de gestion afin d’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 avez le 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 objet BlobServiceClient à 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

Afficher 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 des ressources de données.