Abfragen eines Blob Storage Endpunkts 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, welchen Endpunkttyp 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 ihn dem Speicherkonto zu, wenn er erstellt wird. Das Format eines Azure DNS Zone-Endpunkts lautet 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 einen URI, der auf den Endpunkt auf den Dienstclientkonstruktor verweist. Sie können die URI-Zeichenfolge manuell erstellen oder zur Laufzeit mithilfe der Azure Storage Verwaltungsbibliothek nach dem Dienstendpunkt abfragen.

Important

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.

CNAMEs, die einem Endpunkt eines Speicherkontos zugeordnet sind, können sich ohne Vorankündigung ändern. Ihre Anwendung sollte keine Abhängigkeit von der Anzahl der CNAME-Einträge oder der Unterdomänen haben, 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 Lebenszyklusverwaltungsrichtlinien, Objektreplikationsrichtlinien und Unveränderlichkeitsrichtlinien 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 Ihres Projekts

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

Pakete installieren

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 Direktiven hinzu. Beachten Sie, dass die Codebeispiele Funktionen zwischen Dateien aufteilen können, aber in diesem Abschnitt werden alle Direktiven zusammen aufgelistet.

Fügen Sie die folgenden using Direktiven hinzu:

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

Clientbibliotheksinformationen:

  • Azure. Identität: Stellt Microsoft Entra Tokenauthentifizierungsunterstützung für die Azure SDK bereit und ist für kennwortlose Verbindungen mit Azure Diensten erforderlich.
  • 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 Sie den Storage-Ressourcenanbieter für ein Abonnement

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

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

Note

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

Abfragen für den Blob Storage-Endpunkt

Um den Blob Storage Endpunkt für ein bestimmtes Speicherkonto abzurufen, müssen wir die Eigenschaften des Speicherkontos abrufen, indem der Vorgang "Eigenschaften abrufen" aufgerufen wird. In den folgenden Codebeispielen werden sowohl die Datenzugriffs- als auch die Verwaltungsbibliotheken verwendet, 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, das 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 den Blob Storage Endpunkt für ein Speicherkonto haben, 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.