Biblioteca cliente de blobs de Azure Storage para .NET, versión 12.19.0

Versión del servidor: 2021-02-12, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12, 2020-04-08, 2020-02-10, 2019-12-12, 2019-07-07 y 2019-02-02

Azure Blob Storage es la solución de almacenamiento de objetos de Microsoft para la nube. El almacenamiento de blobs está optimizado para almacenar grandes cantidades de datos no estructurados. Los datos no estructurados son datos que no cumplen un modelo de datos o definición concreta, como texto o datos binarios.

Código | fuentePaquete (NuGet) | Documentación | de referencia de APIDocumentación | de la API RESTDocumentación del producto

Introducción

Instalar el paquete

Instale la biblioteca cliente de Blobs de Azure Storage para .NET con NuGet:

dotnet add package Azure.Storage.Blobs

Requisitos previos

Necesita una suscripción de Azure y una cuenta de almacenamiento para usar este paquete.

Para crear una cuenta de almacenamiento, puede usar Azure Portal, Azure PowerShell o la CLI de Azure. A continuación se facilita un ejemplo mediante el uso de la CLI de Azure:

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

Autenticar el cliente

Para interactuar con el servicio Azure Blobs Storage, deberá crear una instancia de la clase BlobServiceClient. La biblioteca de identidades de Azure facilita la incorporación de compatibilidad con Azure Active Directory para autenticar clientes del SDK de Azure con sus servicios de Azure correspondientes.

// Create a BlobServiceClient that will authenticate through Active Directory
Uri accountUri = new Uri("https://MYSTORAGEACCOUNT.blob.core.windows.net/");
BlobServiceClient client = new BlobServiceClient(accountUri, new DefaultAzureCredential());

Obtenga más información sobre cómo habilitar Azure Active Directory para la autenticación con Azure Storage en nuestra documentación y nuestros ejemplos.

Conceptos clave

Blob Storage está diseñado para:

  • Visualización de imágenes o documentos directamente en un explorador.
  • Almacenamiento de archivos para acceso distribuido.
  • Streaming de audio y vídeo.
  • Escribir en archivos de registro.
  • Almacenamiento de datos para copia de seguridad y restauración, recuperación ante desastres y archivado.
  • Almacenamiento de datos para el análisis en local o en un servicio hospedado de Azure.

Blob Storage ofrece tres tipos de recursos:

  • La cuenta de almacenamiento usada a través de BlobServiceClient
  • Un contenedor de la cuenta de almacenamiento que se usa a través de BlobContainerClient
  • Un blob de un contenedor que se usa a través deBlobClient

Obtenga más información sobre las opciones de autenticación (incluidas las cadenas de conexión, la clave compartida, las firmas de clave compartida, Active Directory y el acceso público anónimo)en nuestros ejemplos.

Seguridad para subprocesos

Garantizamos que todos los métodos de instancia de cliente son seguros para subprocesos e independientes entre sí (instrucciones). Esto garantiza que la recomendación de reutilizar instancias de cliente siempre es segura, incluso entre subprocesos.

Conceptos adicionales

Opciones | de clienteAcceso a la respuesta | Operaciones | de larga duraciónControl de errores | Diagnóstico | Burla | Duración del cliente

Ejemplos

Carga de un blob

// Get a connection string to our Azure Storage account.  You can
// obtain your connection string from the Azure Portal (click
// Access Keys under Settings in the Portal Storage account blade)
// or using the Azure CLI with:
//
//     az storage account show-connection-string --name <account_name> --resource-group <resource_group>
//
// And you can provide the connection string to your application
// using an environment variable.

string connectionString = "<connection_string>";
string containerName = "sample-container";
string blobName = "sample-blob";
string filePath = "sample-file";

// Get a reference to a container named "sample-container" and then create it
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
container.Create();

// Get a reference to a blob named "sample-file" in a container named "sample-container"
BlobClient blob = container.GetBlobClient(blobName);

// Upload local file
blob.Upload(filePath);

Descarga de un blob

// Get a temporary path on disk where we can download the file
string downloadPath = "hello.jpg";

// Download the public blob at https://aka.ms/bloburl
new BlobClient(new Uri("https://aka.ms/bloburl")).DownloadTo(downloadPath);

Enumeración de blobs

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";
string filePath = "hello.jpg";

// Get a reference to a container named "sample-container" and then create it
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
container.Create();

// Upload a few blobs so we have something to list
container.UploadBlob("first", File.OpenRead(filePath));
container.UploadBlob("second", File.OpenRead(filePath));
container.UploadBlob("third", File.OpenRead(filePath));

// Print out all the blob names
foreach (BlobItem blob in container.GetBlobs())
{
    Console.WriteLine(blob.Name);
}

API asincrónicas

Se admiten completamente las API sincrónicas y asincrónicas.

// Get a temporary path on disk where we can download the file
string downloadPath = "hello.jpg";

// Download the public blob at https://aka.ms/bloburl
await new BlobClient(new Uri("https://aka.ms/bloburl")).DownloadToAsync(downloadPath);

Solución de problemas

Todas las operaciones de Blob Service producirán una excepción RequestFailedException en caso de error con s útilesErrorCode. Muchos de estos errores son recuperables.

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";

// Try to delete a container named "sample-container" and avoid any potential race conditions
// that might arise by checking if the container is already deleted or is in the process
// of being deleted.
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

try
{
    container.Delete();
}
catch (RequestFailedException ex)
    when (ex.ErrorCode == BlobErrorCode.ContainerBeingDeleted ||
          ex.ErrorCode == BlobErrorCode.ContainerNotFound)
{
    // Ignore any errors if the container being deleted or if it has already been deleted
}

Pasos siguientes

Introducción a nuestros ejemplos de blobs:

  1. Hola mundo: carga, descarga y enumeración de blobs (o asincrónicamente)
  2. Autenticación: autentíquese con cadenas de conexión, acceso público, claves compartidas, firmas de acceso compartido y Azure Active Directory.

Contribuciones

Consulte storage CONTRIBUTING.md para obtener más información sobre la compilación, las pruebas y la contribución a esta biblioteca.

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para obtener más información, visite cla.microsoft.com.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.

Impresiones