Abfrage für einen Blob Storage-Endpunkt mithilfe der Azure Storage-Verwaltungsbibliothek
Artikel
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.
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.
Öffnen Sie die Datei pom.xml in Ihrem Text-Editor.
Fügen Sie azure-sdk-bom hinzu, um eine Abhängigkeit von der neuesten Version der Bibliothek herzustellen. Ersetzen Sie im folgenden Codeausschnitt den Platzhalter {bom_version_to_target} durch die Versionsnummer. Indem Sie azure-sdk-bom verwenden, müssen Sie nicht die Version jeder einzelnen Abhängigkeit angeben. Weitere Informationen zur BOM finden Sie in der Azure SDK-BOM-Infodatei.
Fügen Sie der Gruppe der Abhängigkeiten dann das folgende Abhängigkeitselement hinzu. Die azure-identity-Abhängigkeit wird für kennwortlose Verbindungen mit Azure-Diensten benötigt.
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.
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.
com.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.
com.azure.storage.blob: Enthält die primären Klassen, die Sie zum Arbeiten mit Blob Storage-Datenressourcen verwenden können.
@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/storage-blob: Enthält die primären Klassen, die Sie zum Arbeiten mit Blob Storage-Datenressourcen verwenden können.
@azure/arm-resources: Unterstützt die Verwaltung von Azure-Ressourcen und -Ressourcengruppen.
@azure/arm-storage: Unterstützt die Verwaltung von Azure Storage-Ressourcen, einschließlich Ressourcengruppen und Speicherkonten.
Fügen Sie die folgenden import -Anweisungen ein:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
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-storage-blob: Enthält die primären Klassen, die Sie zum Arbeiten mit Blob Storage-Datenressourcen verwenden können.
azure-mgmt-resource: Unterstützt die Verwaltung von Azure-Ressourcen und -Ressourcengruppen.
azure-mgmt-storage: Unterstützt die Verwaltung von Azure Storage-Ressourcen, einschließlich Ressourcengruppen und Speicherkonten.
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();
}
public void RegisterSRPInSubscription(AzureResourceManager armClient) {
// Check the registration state of the resource provider and register, if needed
if (armClient.providers().getByName("Microsoft.Storage").registrationState() == "NotRegistered")
armClient.providers().register("Microsoft.Storage");
}
async function registerSRPInSubscription(resourceMgmtClient /*: ResourceManagementClient*/) {
// Check the registration state of the resource provider and register, if needed
if (resourceMgmtClient.providers.get("Microsoft.Storage").registrationState == "NotRegistered")
resourceMgmtClient.providers.register("Microsoft.Storage");
}
def register_srp_in_subscription(self, resource_mgmt_client: ResourceManagementClient):
if (resource_mgmt_client.providers.get("Microsoft.Storage").registration_state == "NotRegistered"):
resource_mgmt_client.providers.register("Microsoft.Storage")
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:
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;
}
Verwenden Sie die folgende Methode aus einem AzureResourceManager-Objekt, um die Eigenschaften für ein angegebenes Speicherkonto abzurufen:
Diese Methode gibt eine StorageAccount-Schnittstelle zurück, bei der es sich um eine unveränderliche clientseitige Darstellung des Speicherkontos handelt.
async function getBlobServiceEndpoint(saName, credential) {
const subscriptionId = "<subscription-id>";
const rgName = "<resource-group-name>";
const storageMgmtClient = new StorageManagementClient(
credential,
subscriptionId
);
// Get the properties for the specified storage account
const storageAccount = await storageMgmtClient.storageAccounts.getProperties(
rgName,
saName
);
// Get the primary endpoint for the blob service
const endpoint = storageAccount.primaryEndpoints.blob;
return endpoint;
}
Verwenden Sie die folgende Methode aus einem StorageManagementClient-Objekt, um die Eigenschaften für ein angegebenes Speicherkonto abzurufen:
Diese Methode gibt ein StorageAccount-Objekt zurück, welches das Speicherkonto darstellt.
def get_blob_service_endpoint(self, storage_account_name, credential: DefaultAzureCredential) -> str:
subscription_id = "<subscription-id>"
rg_name = "<resource-group-name>"
storage_mgmt_client = StorageManagementClient(
credential=credential,
subscription_id=subscription_id
)
# Get the properties for the specified storage account
storage_account = storage_mgmt_client.storage_accounts.get_properties(
resource_group_name=rg_name,
account_name=storage_account_name
)
# Get blob service endpoint
endpoint = storage_account.primary_endpoints.blob
return endpoint
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 ...
String saName = "<storage-account-name>";
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
AccountProperties accountProps = new AccountProperties();
String blobEndpoint = accountProps.GetBlobServiceEndpoint(saName, credential);
System.out.printf("URI: %s", blobEndpoint);
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint(blobEndpoint)
.credential(credential)
.buildClient();
// Do something with the storage account or its resources ...
// For client-side applications running in the browser, use InteractiveBrowserCredential instead of DefaultAzureCredential.
// See https://aka.ms/azsdk/js/identity/examples for more details.
const saName = "<storage-account-name>";
const credential = new DefaultAzureCredential();
// Call out to our function that retrieves the blob service endpoint for a storage account
const endpoint = await getBlobServiceEndpoint(saName, credential)
console.log(endpoint);
// Now that we know the endpoint, create the client object
const blobServiceClient = new BlobServiceClient(
endpoint,
credential);
// Do something with the storage account or its resources ...
storage_account_name = "<storage-account-name>"
credential = DefaultAzureCredential()
sample = BlobEndpointSample()
# Call out to our function that retrieves the blob service endpoint for a storage account
endpoint = sample.get_blob_service_endpoint(storage_account_name, credential)
print(f"URL: {endpoint}")
# Now that we know the endpoint, create the client object
blob_service_client = BlobServiceClient(account_url=endpoint, credential=credential)
# Do something with the storage account or its resources ...
Nächste Schritte
Sehen Sie sich die vollständigen Codebeispiele an (GitHub):