Introducción a los enlaces de Azure Blob Storage para Azure Functions

Azure Functions se integra con Azure Storage mediante desencadenadores y enlaces. La integración con Blob Storage permite crear funciones que reaccionan a los cambios en los datos del blob, así como a los valores de lectura y escritura.

Acción Tipo
Ejecución de una función cuando cambian los datos de Blob Storage Desencadenador
Lectura de datos de Blob Storage en una función Enlace de entrada
Escritura de datos de almacenamiento de blobs desde una función Enlace de salida

Instalación de la extensión

El paquete NuGet de la extensión que instale depende del modo de C# que esté usando en la aplicación de funciones:

Las funciones se ejecutan en el mismo proceso que el host de Functions. Para más información, consulte Desarrollo de funciones de la biblioteca de clases de C# con Azure Functions.

La funcionalidad de la extensión varía en función de la versión de la extensión:

Esta versión presenta la posibilidad de conectarse con una identidad en lugar de un secreto. Para obtener un tutorial sobre cómo configurar las aplicaciones de funciones con identidades administradas, consulte el tutorial Creación de una aplicación de funciones con conexiones basadas en identidades.

Esta versión permite enlazar con tipos de Azure.Storage.Blobs. Obtenga más información sobre las diferencias entre estos nuevos tipos y WindowsAzure.Storage y Microsoft.Azure.Storage, y cómo migrarlos desde la Guía de migración de Azure.Storage.Blobs.

Para que esta extensión esté disponible, hay que instalar el paquete de NuGet Microsoft.Azure.WebJobs.Extensions.Storage.Queues, versión 5.x.

Mediante la CLI de .NET:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage.Blobs --version 5.0.0

Nota

Azure Blobs, Azure Queues y Azure Tables ahora usan extensiones diferentes y se les hace referencia por separado. Por ejemplo, para usar los desencadenadores y enlaces para los tres servicios de la aplicación en proceso de .NET, debe agregar los siguientes paquetes al proyecto:

Anteriormente, las extensiones se enviaban juntas como Microsoft.Azure.WebJobs.Extensions.Storage, versión 4.x. Este mismo paquete también tiene una versión 5.x que hace referencia solo a los paquetes divididos para blobs y colas. Al actualizar las referencias del paquete desde versiones anteriores, es posible que tenga que hacer referencia además al nuevo paquete de NuGet Microsoft.Azure.WebJobs.Extensions.Tables. Además, al hacer referencia a estos paquetes divididos más recientes, asegúrese de que no hace referencia a una versión anterior del paquete de almacenamiento combinado, ya que esto provocaría conflictos por las dos definiciones de los mismos enlaces.

Instalación del conjunto

El enlace de almacenamiento de Blob forma parte de un conjunto de extensiones, que se especifica en el archivo de proyecto host.json. Es posible que tenga que modificar este conjunto para cambiar la versión de los enlaces o en caso de que los conjuntos aún no estén instalados. Para obtener más información, consulte Conjuntos de extensiones.

Esta versión presenta la posibilidad de conectarse con una identidad en lugar de un secreto. Para obtener un tutorial sobre cómo configurar las aplicaciones de funciones con identidades administradas, consulte el tutorial Creación de una aplicación de funciones con conexiones basadas en identidades.

Para agregar esta versión de la extensión desde el conjunto de extensiones v3, puede agregar o reemplazar el código siguiente en el archivo host.json:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

Para obtener más información, consulte Actualización de las extensiones.

Tipos de enlaces

Los tipos de enlace admitidos para .NET dependen de la versión de extensión y del modo de ejecución de C#, que puede ser uno de los siguientes:

Un biblioteca de clases en proceso es una función de C# compilada que se ejecuta en el mismo proceso que Functions Runtime.

Seleccione una versión para ver los detalles del tipo de enlace para el modo y la versión.

La extensión Azure Blobs admite tipos de parámetros según la tabla siguiente.

Enlace Tipos de parámetro
Desencadenador de blobs Stream
TextReader
string
byte[]
BlobClient1
BlockBlobClient1
PageBlobClient1
AppendBlobClient1
BlobBaseClient1
Entrada de blob Stream
TextReader
string
byte[]
BlobClient1
BlockBlobClient1
PageBlobClient1
AppendBlobClient1
BlobBaseClient1
IEnumerable<T>2
Salida del blob Stream
TextWriter
string
byte[]

1 Los tipos de cliente requieren que la Access propiedad del atributo se establezca en FileAccess.ReadWrite.

2IEnumerable<T> proporciona una enumeración de blobs en el contenedor. Aquí, T puede ser cualquiera de los otros tipos admitidos.

Para obtener ejemplos de uso de estos tipos, consulte el repositorio de GitHub de la extensión. Obtenga más información sobre estos nuevos tipos y cómo migrarlos desde la Guía de migración de Azure.Storage.Blobs.

configuración de host.json

En esta sección se describen los valores de configuración de la aplicación de funciones disponibles para las funciones que usan este enlace. Esta configuración solo se aplica cuando se usa la versión 5.0.0 de la extensión y versiones posteriores. El siguiente archivo host.json de ejemplo contiene solo la configuración de la versión 2.x+ para este enlace. Para obtener más información sobre la configuración de la aplicación de funciones en las versiones 2.x y posteriores, consulte la referencia de host.json para Azure Functions.

Nota

Esta sección no se aplica a las versiones de extensión anteriores a 5.0.0. Para esas versiones anteriores, no hay ninguna función de configuración para toda la aplicación de blobs.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4
        }
    }
}
Propiedad Valor predeterminado Descripción
maxDegreeOfParallelism 8* (el número de núcleos disponibles) Número entero de invocaciones simultáneas permitidas para cada función desencadenada por un blob. El valor mínimo permitido es 1.

Pasos siguientes