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:
- Microsoft.Azure.WebJobs.Extensions.Storage.Blobs
- Microsoft.Azure.WebJobs.Extensions.Storage.Queues
- Microsoft.Azure.WebJobs.Extensions.Tables
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 | StreamTextReader string byte[] BlobClient1 BlockBlobClient1 PageBlobClient1 AppendBlobClient1 BlobBaseClient1 |
Entrada de blob | StreamTextReader string byte[] BlobClient1 BlockBlobClient1 PageBlobClient1 AppendBlobClient1 BlobBaseClient1 IEnumerable<T> 2 |
Salida del blob | StreamTextWriter 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. |