Compartilhar via


Consultar um ponto de extremidade do Armazenamento de Blobs usando a biblioteca de gerenciamento do Armazenamento do Azure

Um ponto de extremidade do Armazenamento de Blobs forma o endereço base de todos os objetos em uma conta de armazenamento. Ao criar uma conta de armazenamento, você especifica qual tipo de ponto de extremidade deseja usar. O Armazenamento de Blobs dá suporte a dois tipos pontos de extremidade:

  • Um ponto de extremidade padrão inclui o nome exclusivo da conta de armazenamento, juntamente com um nome de domínio fixo. O formato de um ponto de extremidade padrão é https://<storage-account>.blob.core.windows.net.
  • Um ponto de extremidade da zona DNS do Azure (versão prévia) seleciona dinamicamente uma zona DNS do Azure e a atribui à conta de armazenamento quando ela é criada. O formato de um ponto de extremidade da Zona DNS do Azure é https://<storage-account>.z[00-99].blob.storage.azure.net.

Quando o aplicativo cria um objeto de cliente de serviço que se conecta aos recursos de dados do Armazenamento de Blobs, você passa um URI referenciando o ponto de extremidade para o construtor do cliente de serviço. Você pode construir a cadeia de caracteres de URI manualmente ou pode consultar o ponto de extremidade de serviço em runtime usando a biblioteca de gerenciamento do Armazenamento do Azure.

Importante

Ao fazer referência a um ponto de extremidade de serviço em um aplicativo cliente, é recomendável evitar a dependência de um endereço IP armazenado em cache. O endereço IP da conta de armazenamento está sujeito a alterações, e confiar em um endereço IP armazenado em cache pode resultar em um comportamento inesperado.

CNAMEs associadas a um ponto de extremidade de conta de armazenamento podem ser alterados sem aviso prévio. Seu aplicativo não deve depender do número de registros CNAME ou dos subdomínios associados a esses registros CNAME.

Além disso, é recomendável respeite a vida útil (TTL) do registro DNS e evite substituí-la. A substituição do TTL do DNS pode resultar em um comportamento inesperado.

Para obter mais informações, confira registros CNAME, subdomínios e endereços IP.

A biblioteca de gerenciamento do Armazenamento do Azure fornece acesso programático ao provedor de recursos do Armazenamento do Azure. O provedor de recursos é a implementação, pelo Armazenamento do Azure, do Gerenciador de Recursos do Azure. A biblioteca de gerenciamento permite que os desenvolvedores gerenciem contas de armazenamento e configuração de conta, bem como configurem políticas de gerenciamento do ciclo de vida, políticas de replicação de objeto e políticas de imutabilidade.

Neste artigo, você aprenderá a consultar um ponto de extremidade do Armazenamento de Blobs usando a biblioteca de gerenciamento do Armazenamento do Azure. Em seguida, use esse ponto de extremidade para criar um objeto BlobServiceClient para se conectar aos recursos de dados do Armazenamento de Blobs.

Configurar o seu projeto

Para trabalhar com os exemplos de código neste artigo, siga estas etapas para configurar seu projeto.

Instalar Pacotes

Instale pacotes para trabalhar com as bibliotecas usadas neste exemplo.

Instale os seguintes pacotes por meio de dotnet add package:

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

Configurar o código do aplicativo

Adicione as diretivas using ou import necessárias ao código. Observe que os exemplos de código podem dividir a funcionalidade entre arquivos, mas nesta seção todas as diretivas são listadas juntas.

Adicione as seguintes diretivas using:

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

Informações da biblioteca de clientes:

  • Azure.Identity: fornece suporte à autenticação de token do Microsoft Entra no SDK do Azure e é necessário para conexões sem senha com os serviços do Azure.
  • Azure.ResourceManager.Storage: dá suporte ao gerenciamento de recursos do Armazenamento do Azure, incluindo grupos de recursos e contas de armazenamento.
  • Azure.Storage.Blobs: contém as classes primárias que você pode usar para trabalhar com recursos de dados do Armazenamento de Blobs.

Registrar o provedor de recursos de armazenamento com uma assinatura

Um provedor de recursos deve ser registrado com sua assinatura do Azure antes que você possa trabalhar com ele. Essa etapa só precisa ser feita uma vez por assinatura e só se aplica se o provedor de recursos Microsoft.Storage não estiver registrado na sua assinatura no momento.

Você pode registrar o provedor de recursos de armazenamento ou verificar o status do registro usando o portal do Azure, a CLI do Azure ou o Azure PowerShell.

Você também pode usar as bibliotecas de gerenciamento do Azure para verificar o status do registro e registrar o provedor de recursos de armazenamento, conforme mostrado nos seguintes exemplos:

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

Observação

Para executar a operação de registro, você precisará de permissões para a seguinte ação do RBAC do Azure: Microsoft.Storage/register/action. A permissão está incluída nas funções de Colaborador e de Proprietário.

Consultar um ponto de extremidade do Armazenamento de Blobs

Para recuperar o ponto de extremidade do Armazenamento de Blobs para uma determinada conta de armazenamento, precisamos obter as propriedades da conta de armazenamento chamando a operação Obter Propriedades. Os exemplos de código a seguir usam as bibliotecas de gerenciamento e acesso a dados para obter um ponto de extremidade do Armazenamento de Blobs para uma conta de armazenamento especificada:

Para obter as propriedades de uma conta de armazenamento especificada, use o seguinte método a partir de um objeto StorageAccountCollection :

Esse método retorna um objeto StorageAccountResource, que representa a conta de armazenamento.

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

Criar um objeto cliente usando o ponto de extremidade

Depois de ter o ponto de extremidade do Armazenamento de Blobs para uma conta de armazenamento, você poderá instanciar um objeto cliente para trabalhar com recursos de dados. O exemplo de código a seguir cria um objeto BlobServiceClient usando o ponto de extremidade que recuperamos no exemplo anterior:

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

Próximas etapas

Exibir os exemplos de código completo (GitHub):

Para saber mais sobre como criar e gerenciar objetos de clientes, confira Criar e gerenciar objetos de cliente que interagem com recursos de dados.