Abfrage für einen Blob Storage-Endpunkt mithilfe der Azure Storage-Verwaltungsbibliothek

Ein Blob Storage-Endpunkt bildet die Basisadresse für alle Objekte innerhalb eines Speicherkontos. Wenn Sie ein Speicherkonto erstellen, geben Sie an, welche Art von Endpunkt Sie verwenden möchten. Blob Storage unterstützt zwei Arten von Endpunkten:

  • Ein Standardendpunkt enthält den eindeutigen Speicherkontonamen zusammen mit einem festen Domänennamen. Das Format eines Standardendpunkts ist https://<storage-account>.blob.core.windows.net.
  • Ein Azure DNS-Zonenendpunkt (Vorschau) wählt dynamisch eine Azure DNS-Zone aus und weist sie dem Speicherkonto zu, wenn es erstellt wird. Das Format eines Azure DNS-Zonenendpunkts ist https://<storage-account>.z[00-99].blob.storage.azure.net.

Wenn Ihre Anwendung ein Dienstclientobjekt erstellt, das eine Verbindung mit Blob Storage-Datenressourcen herstellt, übergeben Sie dem Dienstclientkonstruktor einen URI, der auf den Endpunkt verweist. Sie können die URI-Zeichenfolge manuell erstellen, oder Sie können den Dienstendpunkt zur Laufzeit mithilfe der Azure Storage-Verwaltungsbibliothek abfragen.

Wichtig

Beim Verweisen auf einen Dienstendpunkt in einer Clientanwendung wird empfohlen, eine Abhängigkeit von einer zwischengespeicherten IP-Adresse zu vermeiden. Die IP-Adresse des Speicherkontos kann sich ändern, und die Abhängigkeit von einer zwischengespeicherten IP-Adresse kann zu unerwartetem Verhalten führen.

CNAME-Einträge, die einem Speicherkontoendpunkt zugeordnet sind, können ohne vorherige Ankündigung geändert werden. Ihre Anwendung sollte keine Abhängigkeit von der Anzahl der CNAME-Einträge oder der Unterdomänen aufweisen, die diesen CNAME-Einträgen zugeordnet sind.

Darüber hinaus wird empfohlen, die Laufzeit (Time-to-Live, TTL) des DNS-Eintrags zu berücksichtigen und ihn nicht zu überschreiben. Das Überschreiben der DNS-TTL kann zu unerwartetem Verhalten führen.

Weitere Informationen finden Sie unter CNAME-Einträge, Unterdomänen und IP-Adressen.

Die Azure Storage-Verwaltungsbibliothek bietet programmgesteuerten Zugriff auf den Azure Storage-Ressourcenanbieter. Der Ressourcenanbieter ist die Azure Storage-Implementierung des Azure Resource Manager. Mit der Verwaltungsbibliothek können Entwickler Speicherkonten und Kontokonfigurationen verwalten sowie Richtlinien zur Lebenszyklusverwaltung, Objektreplikation und Unveränderbarkeit konfigurieren.

In diesem Artikel erfahren Sie, wie Sie einen Blob Storage-Endpunkt mithilfe der Azure Storage-Verwaltungsbibliothek abfragen. Anschließend verwenden Sie diesen Endpunkt, um ein BlobServiceClient-Objekt zu erstellen, um eine Verbindung mit Blob Storage-Datenressourcen herzustellen.

Einrichten des Projekts

Um die Codebeispiele in diesem Artikel zu verwenden, führen Sie die folgenden Schritte zum Einrichten Ihres Projekts aus.

Installieren von Paketen

Installieren Sie Pakete, um mit den in diesem Beispiel verwendeten Bibliotheken zu arbeiten.

Installieren Sie die folgenden Pakete mittels dotnet add package:

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

Einrichten des App-Codes

Fügen Sie dem Code die erforderlichen using- oder import-Anweisungen hinzu. Beachten Sie, dass die Codebeispiele die Funktionalität auf Dateien verteilen können, aber in diesem Abschnitt werden alle Anweisungen zusammen aufgeführt.

Fügen Sie die folgenden using-Anweisungen hinzu:

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

Clientbibliotheksinformationen:

  • Azure.Identity: Bietet Unterstützung für die Microsoft Entra-Tokenauthentifizierung im gesamten Azure-SDK und wird für kennwortlose Verbindungen mit Azure-Diensten benötigt.
  • Azure.ResourceManager.Storage: Unterstützt die Verwaltung von Azure Storage-Ressourcen, einschließlich Ressourcengruppen und Speicherkonten.
  • Azure.Storage.Blobs: Enthält die primären Klassen, die Sie zum Arbeiten mit Blob Storage-Datenressourcen verwenden können.

Registrieren des Storage-Ressourcenanbieters bei einem Abonnement

Ein Ressourcenanbieter muss bei Ihrem Azure-Abonnement registriert sein, bevor Sie mit ihm arbeiten können. Dieser Schritt muss nur einmal pro Abonnement durchgeführt werden und gilt nur, wenn der Ressourcenanbieter Microsoft.Storage derzeit nicht bei Ihrem Abonnement registriert ist.

Sie können den Storage-Ressourcenanbieter registrieren oder den Registrierungsstatus mithilfe des Azure-Portals, der Azure CLI oder von Azure PowerShell überprüfen.

Sie können auch die Azure-Verwaltungsbibliotheken verwenden, um den Registrierungsstatus zu überprüfen und den Storage-Ressourcenanbieter zu registrieren, wie in den folgenden Beispielen gezeigt:

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

Hinweis

Zum Ausführen des Registrierungsvorgangs benötigen Sie Berechtigungen für die folgende Azure-RBAC-Aktion: Microsoft.Storage/register/action. Die Berechtigung ist in den Rollen Mitwirkender und Besitzer enthalten.

Abfrage für den Blob Storage-Endpunkts

Um den Blob Storage-Endpunkt für ein bestimmtes Speicherkonto abzurufen, müssen wir die Speicherkontoeigenschaften abrufen, indem wir den Vorgang Get Properties (Eigenschaften abrufen) aufrufen. Die folgenden Codebeispielen verwenden sowohl die Datenzugriffs- als auch die Verwaltungsbibliotheken, um einen Blob Storage-Endpunkt für ein angegebenes Speicherkonto abzurufen:

Verwenden Sie die folgende Methode aus einem StorageAccountCollection-Objekt, um die Eigenschaften für ein angegebenes Speicherkonto abzurufen:

Diese Methode gibt ein StorageAccountResource-Objekt zurück, welches das Speicherkonto darstellt.

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

Erstellen eines Clientobjekts mithilfe des Endpunkts

Sobald Sie über den Blob Storage-Endpunkt für ein Speicherkonto verfügen, können Sie ein Clientobjekt instanziieren, um mit Datenressourcen zu arbeiten. Im folgenden Codebeispiel wird ein BlobServiceClient-Objekt mithilfe des Endpunkts erstellt, den wir im vorherigen Beispiel abgerufen haben:

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

Nächste Schritte

Sehen Sie sich die vollständigen Codebeispiele an (GitHub):

Weitere Informationen zum Erstellen von Clientobjekten finden Sie unter Erstellen und Verwalten von Clientobjekten, die mit Datenressourcen interagieren.