Condividi tramite


Eseguire una query per un endpoint di Archiviazione BLOB usando la libreria di gestione Archiviazione di Azure

Un endpoint Archiviazione BLOB costituisce l'indirizzo di base per tutti gli oggetti all'interno di un account di archiviazione. Quando si crea un account di archiviazione, specificare il tipo di endpoint da usare. Blob Archiviazione supporta due tipi di endpoint:

  • Un endpoint standard include il nome dell'account di archiviazione univoco insieme a un nome di dominio fisso. Il formato di un endpoint standard è https://<storage-account>.blob.core.windows.net.
  • Un endpoint di zona DNS di Azure (anteprima) seleziona in modo dinamico una zona DNS di Azure e lo assegna all'account di archiviazione al momento della creazione. Il formato di un endpoint zona DNS di Azure è https://<storage-account>.z[00-99].blob.storage.azure.net.

Quando l'applicazione crea un oggetto client del servizio che si connette alle risorse di dati Archiviazione BLOB, si passa un URI che fa riferimento all'endpoint al costruttore client del servizio. È possibile costruire manualmente la stringa URI oppure eseguire query per l'endpoint di servizio in fase di esecuzione usando la libreria di gestione Archiviazione di Azure.

Importante

Quando si fa riferimento a un endpoint di servizio in un'applicazione client, è consigliabile evitare di assumere una dipendenza da un indirizzo IP memorizzato nella cache. L'indirizzo IP dell'account di archiviazione è soggetto a modifiche e l'utilizzo di un indirizzo IP memorizzato nella cache può comportare un comportamento imprevisto.

I CNAM associati a un endpoint dell'account di archiviazione possono cambiare senza preavviso. L'applicazione non deve dipendere dal numero di record CNAME o dai sottodomini associati a tali record CNAME.

È inoltre consigliabile rispettare la durata (TTL) del record DNS ed evitare di eseguirne l'override. L'override del TTL DNS può comportare un comportamento imprevisto.

Per altre informazioni, vedere Record CNAME, sottodomini e indirizzi IP.

La libreria di gestione Archiviazione di Azure fornisce l'accesso a livello di codice al provider di risorse Archiviazione di Azure. Il provider di risorse è l'implementazione Archiviazione di Azure di Azure Resource Manager. La libreria di gestione consente agli sviluppatori di gestire gli account di archiviazione e la configurazione dell'account, nonché di configurare i criteri di gestione del ciclo di vita, i criteri di replica degli oggetti e i criteri di immutabilità.

Questo articolo illustra come eseguire query su un endpoint Archiviazione BLOB usando la libreria di gestione Archiviazione di Azure. Usare quindi l'endpoint per creare un BlobServiceClient oggetto per connettersi alle risorse di dati Archiviazione BLOB.

Impostare il progetto

Per usare gli esempi di codice in questo articolo, seguire questa procedura per configurare il progetto.

Installare i pacchetti

Installare i pacchetti per lavorare con le librerie usate in questo esempio.

Installare i pacchetti seguenti usando dotnet add package:

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

Configurare il codice dell'app

Aggiungere le direttive o import necessarie using al codice. Si noti che gli esempi di codice possono suddividere le funzionalità tra file, ma in questa sezione tutte le direttive vengono elencate insieme.

Aggiungere le direttive using seguenti:

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

Informazioni sulla libreria client:

  • Azure.Identity: fornisce il supporto per l'autenticazione token di Microsoft Entra in Azure SDK ed è necessario per le connessioni senza password ai servizi di Azure.
  • Azure.ResourceManager. Archiviazione: supporta la gestione delle risorse Archiviazione di Azure, inclusi i gruppi di risorse e gli account di archiviazione.
  • Azure. Archiviazione. BLOB: contiene le classi primarie che è possibile usare per lavorare con le risorse di dati Archiviazione BLOB.

Registrare il provider di risorse Archiviazione con una sottoscrizione

Prima di poterlo usare, è necessario registrare un provider di risorse con la sottoscrizione di Azure. Questo passaggio deve essere eseguito una sola volta per ogni sottoscrizione e si applica solo se il provider di risorse Microsoft.Archiviazione non è attualmente registrato con la sottoscrizione.

È possibile registrare il provider di risorse Archiviazione oppure controllare lo stato della registrazione usando portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell.

È anche possibile usare le librerie di gestione di Azure per controllare lo stato della registrazione e registrare il provider di risorse Archiviazione, come illustrato negli esempi seguenti:

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

Nota

Per eseguire l'operazione di registrazione, sono necessarie le autorizzazioni per l'azione di controllo degli accessi in base al ruolo di Azure seguente: Microsoft.Archiviazione/register/action. Questa autorizzazione è inclusa nei ruoli Collaboratore e Proprietario .

Query per l'endpoint Archiviazione BLOB

Per recuperare l'endpoint Archiviazione BLOB per un determinato account di archiviazione, è necessario ottenere le proprietà dell'account di archiviazione chiamando l'operazione Get Properties. Gli esempi di codice seguenti usano sia l'accesso ai dati che le librerie di gestione per ottenere un endpoint di Archiviazione BLOB per un account di archiviazione specificato:

Per ottenere le proprietà per un account di archiviazione specificato, usare il metodo seguente da un oggetto Archiviazione AccountCollection:

Questo metodo restituisce un oggetto Archiviazione AccountResource, che rappresenta l'account di archiviazione.

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

Creare un oggetto client usando l'endpoint

Dopo aver creato l'endpoint Archiviazione BLOB per un account di archiviazione, è possibile creare un'istanza di un oggetto client per usare le risorse dati. L'esempio di codice seguente crea un BlobServiceClient oggetto usando l'endpoint recuperato nell'esempio precedente:

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

Passaggi successivi

Visualizzare gli esempi di codice completi (GitHub):

Per altre informazioni sulla creazione di oggetti client, vedere Creare e gestire oggetti client che interagiscono con le risorse dati.