Share via


Query's uitvoeren op een Blob Storage-eindpunt met behulp van de Azure Storage-beheerbibliotheek

Een Blob Storage-eindpunt vormt het basisadres voor alle objecten in een opslagaccount. Wanneer u een opslagaccount maakt, geeft u op welk type eindpunt u wilt gebruiken. Blob Storage ondersteunt twee typen eindpunten:

  • Een standaardeindpunt bevat de unieke naam van het opslagaccount, samen met een vaste domeinnaam. De indeling van een standaardeindpunt is https://<storage-account>.blob.core.windows.net.
  • Een Azure DNS-zone-eindpunt (preview) selecteert dynamisch een Azure DNS-zone en wijst dit toe aan het opslagaccount wanneer het wordt gemaakt. De indeling van een Azure DNS-zone-eindpunt is https://<storage-account>.z[00-99].blob.storage.azure.net.

Wanneer uw toepassing een serviceclientobject maakt dat verbinding maakt met Blob Storage-gegevensbronnen, geeft u een URI door die verwijst naar het eindpunt naar de serviceclientconstructor. U kunt de URI-tekenreeks handmatig maken of u kunt tijdens runtime een query uitvoeren op het service-eindpunt met behulp van de Azure Storage-beheerbibliotheek.

Belangrijk

Wanneer u verwijst naar een service-eindpunt in een clienttoepassing, wordt u aangeraden geen afhankelijkheid te maken van een IP-adres in de cache. Het IP-adres van het opslagaccount is onderhevig aan wijzigingen en het vertrouwen op een IP-adres in de cache kan leiden tot onverwacht gedrag.

CNAM's die zijn gekoppeld aan een eindpunt van een opslagaccount, kunnen zonder kennisgeving worden gewijzigd. Uw toepassing mag geen afhankelijkheid hebben van het aantal CNAME-records of de subdomeinen die zijn gekoppeld aan deze CNAME-records.

Daarnaast is het raadzaam om de time-to-live (TTL) van de DNS-record te respecteren en te voorkomen dat u deze overschrijft. Het overschrijven van de DNS-TTL kan leiden tot onverwacht gedrag.

Zie CNAME-records, subdomeinen en IP-adressen voor meer informatie.

De Azure Storage-beheerbibliotheek biedt programmatische toegang tot de Azure Storage-resourceprovider. De resourceprovider is de Azure Storage-implementatie van Azure Resource Manager. Met de beheerbibliotheek kunnen ontwikkelaars opslagaccounts en accountconfiguratie beheren, evenals beleid voor levenscyclusbeheer, beleid voor objectreplicatie en onveranderbaarheidsbeleid configureren.

In dit artikel leert u hoe u een query uitvoert op een Blob Storage-eindpunt met behulp van de Azure Storage-beheerbibliotheek. Vervolgens gebruikt u dat eindpunt om een BlobServiceClient object te maken om verbinding te maken met Blob Storage-gegevensbronnen.

Uw project instellen

Als u wilt werken met de codevoorbeelden in dit artikel, volgt u deze stappen om uw project in te stellen.

Pakketten installeren

Installeer pakketten om te werken met de bibliotheken die in dit voorbeeld worden gebruikt.

Installeer de volgende pakketten met behulp van dotnet add package:

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

De app-code instellen

Voeg de benodigde using of import instructies toe aan de code. Houd er rekening mee dat de codevoorbeelden functionaliteit tussen bestanden kunnen splitsen, maar in deze sectie worden alle instructies samen weergegeven.

Voeg de volgende using-instructies toe:

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

Clientbibliotheekgegevens:

  • Azure.Identity: biedt ondersteuning voor Microsoft Entra-tokenverificatie in de Azure SDK en is nodig voor verbindingen zonder wachtwoorden met Azure-services.
  • Azure.ResourceManager.Storage: ondersteunt het beheer van Azure Storage-resources, waaronder resourcegroepen en opslagaccounts.
  • Azure.Storage.Blobs: bevat de primaire klassen die u kunt gebruiken om met Blob Storage-gegevensbronnen te werken.

De opslagresourceprovider registreren bij een abonnement

Een resourceprovider moet zijn geregistreerd bij uw Azure-abonnement voordat u ermee kunt werken. Deze stap hoeft slechts eenmaal per abonnement te worden uitgevoerd en is alleen van toepassing als de resourceprovider Microsoft.Storage momenteel niet is geregistreerd bij uw abonnement.

U kunt de opslagresourceprovider registreren of de registratiestatus controleren met behulp van Azure Portal, Azure CLI of Azure PowerShell.

U kunt ook de Azure-beheerbibliotheken gebruiken om de registratiestatus te controleren en de opslagresourceprovider te registreren, zoals wordt weergegeven in de volgende voorbeelden:

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

Notitie

Als u de registratiebewerking wilt uitvoeren, hebt u machtigingen nodig voor de volgende Azure RBAC-actie: Microsoft.Storage/register/action. Deze machtiging is opgenomen in de rollen Inzender en Eigenaar .

Query uitvoeren op het Blob Storage-eindpunt

Als u het Blob Storage-eindpunt voor een bepaald opslagaccount wilt ophalen, moeten we de eigenschappen van het opslagaccount ophalen door de bewerking Eigenschappen ophalen aan te roepen. In de volgende codevoorbeelden worden zowel de gegevenstoegang als beheerbibliotheken gebruikt om een Blob Storage-eindpunt op te halen voor een opgegeven opslagaccount:

Als u de eigenschappen voor een opgegeven opslagaccount wilt ophalen, gebruikt u de volgende methode van een StorageAccountCollection-object :

Deze methode retourneert een StorageAccountResource-object , dat het opslagaccount vertegenwoordigt.

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

Een clientobject maken met behulp van het eindpunt

Zodra u het Blob Storage-eindpunt voor een opslagaccount hebt, kunt u een clientobject instantiƫren om met gegevensbronnen te werken. In het volgende codevoorbeeld wordt een BlobServiceClient object gemaakt met behulp van het eindpunt dat we in het vorige voorbeeld hebben opgehaald:

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

Volgende stappen

Bekijk de volledige codevoorbeelden (GitHub):

Zie Clientobjecten maken en beheren die communiceren met gegevensbronnen voor meer informatie over het maken van clientobjecten.