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 opzetten
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
Open het pom.xml bestand in de teksteditor.
Voeg azure-sdk-bom toe om een afhankelijkheid te maken van de nieuwste versie van de bibliotheek. Vervang in het volgende codefragment de {bom_version_to_target} tijdelijke aanduiding door het versienummer. Als u azure-sdk-bom gebruikt, hoeft u niet de versie van elke afzonderlijke afhankelijkheid op te geven. Zie de Azure SDK BOM README voor meer informatie over de BOM.
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>{bom_version_to_target}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
Voeg vervolgens de volgende afhankelijkheidselementen toe aan de groep afhankelijkheden. De azure-identity-afhankelijkheid is nodig voor verbindingen zonder wachtwoord met Azure-services.
<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-storage-blob</artifactId>
</dependency>
<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-identity</artifactId>
</dependency>
<dependency>
  <groupId>com.azure.resourcemanager</groupId>
  <artifactId>azure-resourcemanager</artifactId>
  <version>2.24.0</version>
</dependency>
<dependency>
  <groupId>com.azure.resourcemanager</groupId>
  <artifactId>azure-resourcemanager-storage</artifactId>
  <version>2.24.0</version>
</dependency>
<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-core-management</artifactId>
  <version>1.10.2</version>
</dependency>
Installeer de volgende pakketten met behulp van npm install:
npm install @azure/identity
npm install @azure/storage-blob
npm install @azure/arm-resources
npm install @azure/arm-storage
Installeer de volgende pakketten met behulp van pip install:
pip install azure-identity
pip install azure-storage-blob
pip install azure-mgmt-resource
pip install azure-mgmt-storage
 
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.
Voeg de volgende import-instructies toe:
import com.azure.identity.*;
import com.azure.storage.blob.*;
import com.azure.resourcemanager.*;
import com.azure.resourcemanager.storage.models.*;
import com.azure.core.management.*;
import com.azure.core.management.profile.*;
Clientbibliotheekgegevens:
- 
              com.azure.identity: biedt ondersteuning voor Microsoft Entra-tokenverificatie in de Azure SDK en is nodig voor verbindingen zonder wachtwoord met Azure-services.
- 
              com.azure.storage.blob: bevat de primaire klassen die u kunt gebruiken om te werken met Blob Storage-gegevensbronnen.
- 
              com.azure.resourcemanager: ondersteunt het beheer van Azure-resources en -resourcegroepen.
- 
              com.azure.resourcemanager.storage: ondersteunt het beheer van Azure Storage-resources, waaronder resourcegroepen en opslagaccounts.
Voeg de volgende require instructies toe om de modules te laden:
const { DefaultAzureCredential } = require("@azure/identity");
const { BlobServiceClient } = require("@azure/storage-blob");
const { ResourceManagementClient } = require("@azure/arm-resources");
const { StorageManagementClient } = require("@azure/arm-storage");
Clientbibliotheekgegevens:
- 
              @azure/identiteit: biedt ondersteuning voor Microsoft Entra-tokenverificatie in de Azure SDK en is nodig voor verbindingen zonder wachtwoord met Azure-services.
- 
              @azure/storage-blob: bevat de primaire klassen die u kunt gebruiken om met Blob Storage-gegevensbronnen te werken.
- 
              @azure/arm-resources: ondersteunt het beheer van Azure-resources en -resourcegroepen.
- 
              @azure/arm-storage: ondersteunt het beheer van Azure Storage-resources, waaronder resourcegroepen en opslagaccounts.
Voeg de volgende import instructies toe:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
Clientbibliotheekgegevens:
- 
              azure-identity: biedt ondersteuning voor Microsoft Entra-tokenverificatie in de Azure SDK en is nodig voor verbindingen zonder wachtwoord met Azure-services.
- 
              azure-storage-blob: bevat de primaire klassen die u kunt gebruiken om te werken met Blob Storage-gegevensbronnen.
- 
              azure-mgmt-resource: ondersteunt het beheer van Azure-resources en -resourcegroepen.
- 
              azure-mgmt-storage: ondersteunt het beheer van Azure Storage-resources, waaronder resourcegroepen en opslagaccounts.
 
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();
}
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")
 
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;
}
Als u de eigenschappen voor een opgegeven opslagaccount wilt ophalen, gebruikt u de volgende methode van een AzureResourceManager-object :
Deze methode retourneert een StorageAccount-interface , een onveranderbare clientweergave van het opslagaccount.
public String GetBlobServiceEndpoint(String saName, DefaultAzureCredential credential) {
    String subscriptionID = "<subscription-id>";
    String rgName = "<resource-group-name>";
    AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
    AzureResourceManager azureResourceManager = AzureResourceManager
            .configure()
            .authenticate(credential, profile)
            .withSubscription(subscriptionID);
    StorageAccount storageAccount = azureResourceManager.storageAccounts()
            .getByResourceGroup(rgName, saName);
    String endpoint = storageAccount.endPoints().primary().blob();
    return endpoint;
}
Gebruik de volgende methode van een StorageManagementClient-object om de eigenschappen voor een opgegeven opslagaccount op te halen:
Deze methode retourneert een Promise<StorageAccountsGetPropertiesResponse>, dat het opslagaccount vertegenwoordigt.
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;
}
Gebruik de volgende methode van een StorageManagementClient-object om de eigenschappen voor een opgegeven opslagaccount op te halen:
Met deze methode wordt een StorageAccount object geretourneerd dat het opslagaccount vertegenwoordigt.
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
 
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 ...
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 ...
 
Volgende stappen
Bekijk de volledige codevoorbeelden (GitHub):
Zie Clientobjecten maken en beheren die communiceren met gegevensbronnen voor meer informatie over het maken van clientobjecten.