Consulta de un punto de conexión de Blob Storage mediante la biblioteca de administración de Azure Storage.
Artículo
Un punto de conexión de Blob Storage forma la dirección base de todos los objetos de una cuenta de almacenamiento. Al crear una cuenta de almacenamiento, se especifica el tipo de punto de conexión que desea usar. Blob Storage admite dos tipos de puntos de conexión.
Un punto de conexión estándar incluye el nombre de la cuenta de almacenamiento único junto con un nombre de dominio fijo. El formato de un punto de conexión estándar es https://<storage-account>.blob.core.windows.net.
Un punto de conexión de zona de Azure DNS (versión preliminar) selecciona dinámicamente una zona de Azure DNS y la asigna a la cuenta de almacenamiento cuando se crea. El formato de un punto de conexión de zona de Azure DNS es https://<storage-account>.z[00-99].blob.storage.azure.net.
Cuando la aplicación crea un objeto de cliente de servicio que se conecta a los recursos de datos de Blob Storage, se pasa un URI que hace referencia al punto de conexión al constructor de cliente de servicio. Puede construir manualmente la cadena de URI o puede consultar el punto de conexión de servicio en tiempo de ejecución mediante la biblioteca de administración de Azure Storage.
Importante
Al hacer referencia a un punto de conexión de servicio en una aplicación cliente, se recomienda evitar la dependencia de una dirección IP almacenada en caché. La dirección IP de la cuenta de almacenamiento está sujeta a cambios y, por su parte, confiar en una dirección IP almacenada en caché podría dar lugar a comportamientos inesperados.
Los CNAME asociados a un punto de conexión de cuenta de almacenamiento pueden cambiar sin previo aviso. La aplicación no debe depender del número de registros CNAME o de los subdominios asociados a esos registros CNAME.
Además, se recomienda respetar el período de vida (TTL) del registro DNS y evitar reemplazarlo. La invalidación del TTL de DNS podría dar lugar a comportamientos inesperados.
La biblioteca de administración de Azure Storage proporciona acceso mediante programación al proveedor de recursos de Azure Storage. El proveedor de recursos es la implementación de Azure Storage de Azure Resource Manager. La biblioteca de administración permite a los desarrolladores administrar cuentas de almacenamiento y la configuración de cuentas, así como configurar directivas de administración del ciclo de vida, directivas de replicación de objetos y directivas de inmutabilidad.
En este artículo, aprenderá a consultar un punto de conexión de Blob Storage mediante la biblioteca de administración de Azure Storage. Después, use ese punto de conexión para crear un objeto BlobServiceClient para conectarse a los recursos de datos de Blob Storage.
Configuración del proyecto
Para trabajar con los ejemplos de código de este artículo, siga los pasos siguientes a fin de configurar el proyecto.
Instalar paquetes
Instale paquetes para trabajar con las bibliotecas usadas en este ejemplo.
Agregue azure-sdk-bom para tomar una dependencia de la versión más reciente de la biblioteca. En el fragmento de código siguiente, reemplace el marcador de posición {bom_version_to_target} por el número de versión. El uso de azure-sdk-bom le impide especificar la versión de cada dependencia individual. Para más información sobre el BOM, consulte el archivo LÉAME de BOM del SDK de Azure.
A continuación, agregue los siguientes elementos de dependencia al grupo de dependencias. La dependencia de azure-identity es necesaria para las conexiones sin contraseña a los servicios de Azure.
Agregue las directivas necesarias using o import al código. Tenga en cuenta que los ejemplos de código pueden dividir la funcionalidad entre archivos, pero en esta sección todas las directivas se enumeran juntas.
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;
Información sobre la biblioteca cliente:
azure-identity: proporciona compatibilidad con la autenticación de tokens de Microsoft Entra en el SDK de Azure y es necesario para las conexiones sin contraseña a los servicios de Azure.
Azure.ResourceManager.Storage: admite la administración de recursos de Azure Storage, incluidos los grupos de recursos y las cuentas de almacenamiento.
Azure.Storage.Blobs: contiene las clases principales que puede usar para trabajar con recursos de datos de Blob Storage.
com.azure.identity: proporciona compatibilidad con la autenticación de tokens de Microsoft Entra en el SDK de Azure y es necesario para las conexiones sin contraseña a los servicios de Azure.
com.azure.storage.blob: contiene las clases principales que puede usar para trabajar con recursos de datos de Blob Storage.
com.azure.resourcemanager.storage: admite la administración de recursos de Azure Storage, incluidos los grupos de recursos y las cuentas de almacenamiento.
Agregue las siguientes instrucciones require para cargar los módulos:
@azure/identity: proporciona compatibilidad con la autenticación de tokens de Microsoft Entra en el SDK de Azure y es necesario para las conexiones sin contraseña a los servicios de Azure.
@azure/storage-blob: contiene las clases principales que puede usar para trabajar con recursos de datos de Blob Storage.
@azure/arm-resources: admite la administración de recursos y grupos de recursos de Azure.
@azure/arm-storage: admite la administración de recursos de Azure Storage, incluidos los grupos de recursos y las cuentas de almacenamiento.
Agregue las instrucciones siguientes import :
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
Información sobre la biblioteca cliente:
azure-identity: proporciona compatibilidad con la autenticación de tokens de Microsoft Entra ID en el SDK de Azure y es necesario para las conexiones sin contraseña a los servicios de Azure.
azure-storage-blob: contiene las clases principales que puede usar para trabajar con recursos de datos de Blob Storage.
azure-mgmt-resource: admite la administración de recursos y grupos de recursos de Azure.
azure-mgmt-storage: admite la administración de recursos de Azure Storage, incluidos los grupos de recursos y las cuentas de almacenamiento.
Registro de un proveedor de recursos de Storage con una suscripción
Un proveedor de recursos debe registrarse con su suscripción de Azure para poder trabajar con él. Este paso solo debe realizarse una vez por suscripción y solo se aplica si el proveedor de recursos Microsoft.Storage no está registrado actualmente en la suscripción.
También puede usar las bibliotecas de administración de Azure para comprobar el estado de registro y registrar el proveedor de recursos de Storage, como se muestra en los ejemplos siguientes:
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")
Nota
Para realizar la operación de registro, necesitará permisos para la siguiente acción de RBAC de Azure: Microsoft.Storage/register/action. Este permiso se incluye en los roles Colaborador y Propietario.
Consulta del punto de conexión de Blob Storage
Para recuperar el punto de conexión de Blob Storage para una cuenta de almacenamiento determinada, es necesario obtener las propiedades de la cuenta de almacenamiento mediante una llamada a la operación Obtener propiedades. Los ejemplos de código siguientes usan el acceso a los datos y las bibliotecas de administración para obtener un punto de conexión de Blob Storage para una cuenta de almacenamiento especificada:
Este método devuelve un objeto StorageAccountResource, que representa la cuenta de almacenamiento.
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;
}
Para obtener las propiedades de una cuenta de almacenamiento especificada, use el siguiente método desde un objeto AzureResourceManager:
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;
}
Para obtener las propiedades de una cuenta de almacenamiento especificada, use el siguiente método desde un objeto StorageManagementClient:
Este método devuelve un objeto StorageAccount, que representa la cuenta de almacenamiento.
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
Creación de un objeto de cliente mediante el punto de conexión
Una vez que tenga el punto de conexión de Blob Storage para una cuenta de almacenamiento, puede crear una instancia de un objeto de cliente para trabajar con recursos de datos. En el ejemplo de código siguiente se crea un objeto BlobServiceClient mediante el punto de conexión que recuperamos en el ejemplo 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 ...
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 ...