Vue d’ensemble des liaisons de Stockage Blob Azure pour Azure Functions

Azure Functions s’intègre à Stockage Azure via des déclencheurs et des liaisons. L’intégration à Stockage Blob vous permet de créer des fonctions qui réagissent aux modifications de données d’objets Blob ainsi qu’à la lecture et à l’écriture de valeurs.

Action Type
Exécuter une fonction quand des données de stockage d’objets Blob sont modifiées Déclencheur
Lire des données de stockage d’objets Blob dans une fonction Liaison d’entrée
Autoriser une fonction à écrire des données de stockage d’objets Blob Liaison de sortie

Installer l’extension

Le package NuGet de l’extension que vous installez dépend du mode C# que vous utilisez dans votre application de fonction :

Les fonctions s’exécutent dans un processus de travail C# isolé. Pour en savoir plus, consultez Guide pour l’exécution d’Azure Functions C# dans un processus Worker isolé.

La fonctionnalité de l’extension varie en fonction de la version de l’extension :

Cette version introduit la possibilité de se connecter à l’aide d’une identité au lieu d’un secret. Pour obtenir un tutoriel sur la configuration de vos applications de fonction avec des identités managées, consultez le tutoriel Création d’une application de fonction avec des connexions basées sur l’identité.

Cette version vous permet de lier des types à partir de Azure.Storage.Blobs. Pour en savoir plus sur les différences de ces nouveaux types entre WindowsAzure.Storage et Microsoft.Azure.Storage, et comment migrer vers ceux-ci, consultez le Guide de migration Azure.Stockage.Blobs.

Cette version prend en charge la configuration des déclencheurs et des liaisons via l’intégration de .NET Aspire.

Ajoutez l’extension à votre projet en installant le package NuGet Microsoft.Azure.Functions.Worker.Extensions.Stockage.Blobs, version 5.x ou suivantes.

Utilisation de l’interface CLI .NET :

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs

Notes

Les objets blob Azure, les files d’attente Azure et les tables Azure utilisent désormais des extensions distinctes, et sont référencés individuellement. Par exemple, pour utiliser les déclencheurs et les liaisons pour les trois services de votre application à processus isolé .NET, vous devez ajouter les packages suivants à votre projet :

Auparavant, les extensions étaient fournies en tant que Microsoft.Azure.Functions.Worker.Extensions.Storage, version 4.x. Ce même package a également une version 5.x, qui fait référence aux packages fractionnés pour les objets blob et les files d’attente uniquement. Lors de la mise à niveau de vos références de package à partir d’anciennes versions, vous devrez peut-être également référencer le nouveau package NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables. En outre, lors du référencement de ces packages fractionnés plus récents, veillez à ne pas référencer une version antérieure du package de stockage combiné, car cela entraîne des conflits à partir de deux définitions des mêmes liaisons.

Si vous écrivez votre application en tirant parti de F#, vous devez également configurer cette extension dans le cadre de la configuration de démarrage de l’application. Dans l’appel à ConfigureFunctionsWorkerDefaults() ou ConfigureFunctionsWebApplication(), ajoutez un délégué prenant un paramètre IFunctionsWorkerApplication. Ensuite, dans le corps de ce délégué, appelez ConfigureBlobStorageExtension() sur l’objet :

let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
    appBuilder.ConfigureBlobStorageExtension() |> ignore
) |> ignore

Installer le bundle

La liaison de stockage Blob fait partie d’une offre groupée d’extension, qui est spécifiée dans votre fichier projet host.json. Vous devrez peut-être modifier cette offre groupée pour modifier la version de la liaison ou si les offres groupées ne sont pas encore installées. Pour plus d’informations, consultez le bundle d’extensions.

Cette version introduit la possibilité de se connecter à l’aide d’une identité au lieu d’un secret. Pour obtenir un tutoriel sur la configuration de vos applications de fonction avec des identités managées, consultez le tutoriel sur la création d’une application de fonction avec des connexions basées sur l’identité.

Vous pouvez ajouter cette version de l’extension à partir de l’offre groupée d’extension v3 en ajoutant ou en remplaçant le code suivant dans votre fichier host.json :

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

Pour en savoir plus, consultez Mettre à jour vos extensions.

Types de liaisons

Les types de liaisons pris en charge pour .NET dépendent à la fois de la version de l’extension et du mode d’exécution C#, qui peut être l’un des suivants :

Une bibliothèque de classes de processus Worker isolé est une fonction C# compilée exécutée dans un processus Worker isolé du runtime.

Choisissez une version pour afficher les détails des types de liaison du mode et de la version.

Le processus Worker isolé prend en charge les types de paramètres en fonction des tableaux ci-dessous.

Déclencheur d’objet blob

Le déclencheur d’objet blob peut être lié aux types suivants :

Type Description
string Contenu de l’objet blob en tant que chaîne. À utiliser quand le contenu de l’objet blob est un texte simple.
byte[] Octets du contenu de l’objet blob.
Types sérialisables JSON Quand un objet blob contient des données JSON, Functions tente de désérialiser les données JSON dans un type d’objet POCO (Plain-Old CLR Object).
Stream1 Flux d’entrée du contenu de l’objet blob.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Client connecté à l’objet blob. Cet ensemble de types offre le meilleur contrôle pour le traitement de l’objet blob et peut être utilisé pour réécrire dans celui-ci, si la connexion dispose des autorisations suffisantes.

1 Pour utiliser ces types, vous devez référencer Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 ou version ultérieure et les dépendances courantes pour les liaisons de type kit de développement logiciel (SDK).

Liaison d’entrée d’objet blob

Lorsque vous souhaitez que la fonction écrive dans un seul blob, la liaison de sortie blob peut se lier aux types suivants :

Type Description
string Contenu de l’objet blob en tant que chaîne. À utiliser quand le contenu de l’objet blob est un texte simple.
byte[] Octets du contenu de l’objet blob.
Types sérialisables JSON Quand un objet blob contient des données JSON, Functions tente de désérialiser les données JSON dans un type d’objet POCO (Plain-Old CLR Object).
Stream1 Flux d’entrée du contenu de l’objet blob.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Client connecté à l’objet blob. Cet ensemble de types offre le meilleur contrôle pour le traitement de l’objet blob et peut être utilisé pour réécrire dans celui-ci, si la connexion dispose des autorisations suffisantes.

Lorsque vous souhaitez que la fonction traite plusieurs blobs à partir d’un conteneur, la liaison de sortie blob peut se lier aux types suivants :

Type Description
T[] ou List<T>T est l’un des types de liaison de sortie d’objet blob unique Tableau ou liste de plusieurs objets blob. Chaque entrée représente un objet blob du conteneur. Vous pouvez également lier à n’importe quelle interface implémentée par ces types, telles que IEnumerable<T>.
BlobContainerClient1 Un client connecté au conteneur. Ce type offre le meilleur contrôle pour le traitement du conteneur et peut être utilisé pour écrire dans celui-ci si la connexion dispose d’autorisations suffisantes.

1 Pour utiliser ces types, vous devez référencer Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 ou version ultérieure et les dépendances courantes pour les liaisons de type kit de développement logiciel (SDK).

Liaison de sortie d’objet blob

Lorsque vous souhaitez que la fonction écrive dans un seul blob, la liaison de sortie blob peut se lier aux types suivants :

Type Description
string Contenu de l’objet blob en tant que chaîne. À utiliser quand le contenu de l’objet blob est un texte simple.
byte[] Octets du contenu de l’objet blob.
Types sérialisables JSON Un objet représentant le contenu d'un blob JSON. Les fonctions tentent de sérialiser un ancien type d'objet CLR (POCO) en données JSON.

Lorsque vous souhaitez que la fonction écrive dans plusieurs blobs, la liaison de sortie de blob peut se lier aux types suivants :

Type Description
T[]T est l’un des types de liaison de sortie d’objet blob unique Un tableau contenant le contenu de plusieurs blobs. Chaque entrée représente le contenu d’un blob.

Pour d’autres scénarios de sortie, créez et utilisez un BlobClient ou BlobContainerClient avec d’autres types à partir d’Azure.Storage.Blobs directement. Consultez Inscrire des clients Azure pour obtenir un exemple d’utilisation de l’injection de dépendances pour créer un type de client à partir du Kit de développement logiciel (SDK) Azure.

Paramètres host.json

Cette section décrit les paramètres de configuration d’application de fonction disponibles pour les fonctions qui utilisent cette liaison. Ces paramètres s’appliquent uniquement lors de l’utilisation de la version d’extension 5.0.0 ou d’une version supérieure. L’exemple de fichier host.json ci-dessous contient seulement les paramètres des versions 2.x et ultérieures pour cette liaison. Pour plus d’informations sur les paramètres de configuration de l’application de fonction dans les versions 2.x et ultérieures, consultez Référence host.json pour Azure Functions.

Notes

Cette section ne s’applique pas aux versions d’extension antérieures à 5.0.0. Pour ces versions antérieures, il n’y a pas de paramètre de configuration de l’application de fonction pour les blobs.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
Propriété Default Description
maxDegreeOfParallelism 8 * (nombre de mémoires à tores magnétiques) Le nombre entier d’expressions d’appels simultanés autorisés pour toutes les fonctions déclenchées par un objet blob dans une application de fonction donnée. La valeur minimale autorisée est de 1.
poisonBlobThreshold 5 Nombre entier de tentatives de traitement d’un message avant de le placer dans la file d’attente de messages incohérents. La valeur minimale autorisée est de 1.

Étapes suivantes