Condividi tramite


Panoramica del binding dell'archiviazione BLOB di Azure per Funzioni di Azure

Funzioni di Azure si integra con Archiviazione di Azure tramite trigger e associazioni. L'integrazione con l'archiviazione BLOB consente di creare funzioni che reagiscono alle modifiche apportate ai dati BLOB, nonché ai valori di lettura e scrittura.

Azione Type
Eseguire una funzione come modifiche ai dati di archiviazione BLOB Trigger
Leggere i dati di archiviazione BLOB in una funzione Associazione di input
Consentire a una funzione di scrivere dati di archiviazione BLOB Associazione di output

Installare l'estensione

Il pacchetto NuGet di estensione installato dipende dalla modalità C# usata nell'app per le funzioni:

Le funzioni sono eseguite in un processo di lavoro C# isolato. Per altre informazioni, vedere Guida per l'esecuzione di Funzioni di Azure C# in un processo di lavoro isolato.

La funzionalità dell'estensione varia a seconda della versione dell'estensione:

Questa versione introduce la possibilità di connettersi usando un'identità anziché un segreto. Per un'esercitazione sulla configurazione delle app per le funzioni con identità gestite, vedere l'esercitazione Creazione di un'app per le funzioni con connessioni basate sull'identità.

Questa versione consente di eseguire il binding ai tipi da Azure.Storage.Blobs. Altre informazioni su come questi nuovi tipi sono diversi da WindowsAzure.Storage e Microsoft.Azure.Storage su come eseguirne la migrazione dalla Guida alla migrazione di Azure.Storage.Blobs.

Questa versione supporta la configurazione di trigger e associazioni tramite l'integrazione di .NET Aspire.

Aggiungere l'estensione al progetto installando il pacchetto NuGet Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs, versione 5.x o successiva.

Uso dell'interfaccia della riga di comando di .NET:

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

Nota

I BLOB di Azure, le code di Azure e le tabelle di Azure ora usano estensioni separate e fanno riferimento singolarmente. Ad esempio, per usare i trigger e le associazioni per tutti e tre i servizi nell'app con processo isolato .NET, è necessario aggiungere i pacchetti seguenti al progetto:

In precedenza, le estensioni fornite insieme come Microsoft.Azure.Functions.Worker.Extensions.Storage, versione 4.x. Questo stesso pacchetto ha anche una versione 5.x, che fa riferimento solo ai pacchetti divisi per BLOB e code. Quando si aggiornano i riferimenti al pacchetto da versioni precedenti, potrebbe quindi essere necessario fare riferimento al nuovo pacchetto NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables . Inoltre, quando si fa riferimento a questi pacchetti di divisione più recenti, assicurarsi di non fare riferimento a una versione precedente del pacchetto di archiviazione combinato, in quanto ciò comporterà conflitti da due definizioni delle stesse associazioni.

Se si scrive l'applicazione usando F#, è necessario configurare questa estensione anche come parte della configurazione di avvio dell'app. Nella chiamata a ConfigureFunctionsWorkerDefaults() o ConfigureFunctionsWebApplication()aggiungere un delegato che accetta un IFunctionsWorkerApplication parametro. Quindi, all'interno del corpo del delegato, chiamare ConfigureBlobStorageExtension() sull'oggetto :

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

Installare il bundle

L'associazione di archiviazione BLOB fa parte di un bundle di estensione, specificato nel file di progetto host.json. Potrebbe essere necessario modificare questo bundle per modificare la versione dell'associazione o se i bundle non sono già installati. Per altre informazioni, vedere bundle di estensioni.

Questa versione introduce la possibilità di connettersi usando un'identità anziché un segreto. Per un'esercitazione sulla configurazione delle app per le funzioni con identità gestite, vedere l'esercitazione Creazione di un'app per le funzioni con connessioni basate sull'identità.

È possibile aggiungere questa versione dell'estensione dal bundle di estensione v3 aggiungendo o sostituendo il codice seguente nel host.json file:

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

Per altre informazioni, vedere Aggiornare le estensioni.

Tipi di associazioni

I tipi di associazione supportati per .NET dipendono sia dalla versione dell'estensione che dalla modalità di esecuzione di C#, che può essere una delle seguenti:

Una funzione C# compilata di libreria di classi di processo di lavoro viene eseguita in un processo isolato dal runtime.

Scegliere una versione per visualizzare i dettagli del tipo di associazione per la modalità e la versione.

Il processo di lavoro isolato supporta i tipi di parametro in base alle tabelle seguenti.

Trigger di BLOB

Il trigger BLOB può essere associato ai tipi seguenti:

Tipo Descrizione
string Contenuto del BLOB come stringa. Usare quando il contenuto del BLOB è testo semplice.
byte[] Byte del contenuto del BLOB.
Tipi serializzabili JSON Quando un BLOB contiene dati JSON, Funzioni tenta di deserializzare i dati JSON in un tipo POCO (Plain-Old CLR Object).
Flusso1 Flusso di input del contenuto del BLOB.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Un client connesso al BLOB. Questo set di tipi offre il maggior controllo per l'elaborazione del BLOB e può essere usato per eseguire il writeback nel BLOB se la connessione dispone di autorizzazioni sufficienti.

1 Per usare questi tipi, è necessario fare riferimento a Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 o versione successiva e alle dipendenze comuni per le associazioni di tipi SDK.

Associazione di input BLOB

Quando si vuole che la funzione elabori un singolo BLOB, l'associazione di input del BLOB può essere associata ai tipi seguenti:

Tipo Descrizione
string Contenuto del BLOB come stringa. Usare quando il contenuto del BLOB è testo semplice.
byte[] Byte del contenuto del BLOB.
Tipi serializzabili JSON Quando un BLOB contiene dati JSON, Funzioni tenta di deserializzare i dati JSON in un tipo POCO (Plain-Old CLR Object).
Flusso1 Flusso di input del contenuto del BLOB.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Un client connesso al BLOB. Questo set di tipi offre il maggior controllo per l'elaborazione del BLOB e può essere usato per eseguire il writeback in esso se la connessione dispone di autorizzazioni sufficienti.

Quando si vuole che la funzione elabori più BLOB da un contenitore, l'associazione di input BLOB può essere associata ai tipi seguenti:

Tipo Descrizione
T[] o List<T> dove T è uno dei singoli tipi di associazione di input BLOB Matrice o elenco di più BLOB. Ogni voce rappresenta un BLOB dal contenitore. È anche possibile eseguire il binding a qualsiasi interfaccia implementata da questi tipi, ad esempio IEnumerable<T>.
BlobContainerClient1 Un client connesso al contenitore. Questo tipo offre il maggior controllo per l'elaborazione del contenitore e può essere usato per scrivervi se la connessione dispone di autorizzazioni sufficienti.

1 Per usare questi tipi, è necessario fare riferimento a Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 o versione successiva e alle dipendenze comuni per le associazioni di tipi SDK.

Associazione di output BLOB

Quando si vuole che la funzione scriva in un singolo BLOB, l'associazione di output del BLOB può essere associata ai tipi seguenti:

Tipo Descrizione
string Contenuto del BLOB come stringa. Usare quando il contenuto del BLOB è testo semplice.
byte[] Byte del contenuto del BLOB.
Tipi serializzabili JSON Oggetto che rappresenta il contenuto di un BLOB JSON. Funzioni tenta di serializzare un tipo di oggetto CLR (POCO) normale in dati JSON.

Quando si vuole che la funzione scriva in più BLOB, l'associazione di output del BLOB può essere associata ai tipi seguenti:

Tipo Descrizione
T[] dove T è uno dei tipi di associazione di output del BLOB singolo Matrice contenente contenuto per più BLOB. Ogni voce rappresenta il contenuto di un BLOB.

Per altri scenari di output, creare e usare blobClient o BlobContainerClient con altri tipi direttamente da Azure.Storage.Blobs. Vedere Registrare i client di Azure per un esempio di uso dell'inserimento delle dipendenze per creare un tipo di client da Azure SDK.

impostazioni host.json

Questa sezione descrive le impostazioni di configurazione dell'app per le funzioni disponibili per le funzioni che usano questa associazione. Queste impostazioni si applicano solo quando si usa l'estensione versione 5.0.0 e successive. L'esempio host.json file seguente contiene solo le impostazioni della versione 2.x+ per questa associazione. Per altre informazioni sulle impostazioni di configurazione delle app per le funzioni nelle versioni 2.x e successive, vedere informazioni di riferimento host.json per Funzioni di Azure.

Nota

Questa sezione non si applica alle versioni dell'estensione precedenti alla versione 5.0.0. Per queste versioni precedenti, non sono presenti impostazioni di configurazione a livello di app per le funzioni per i BLOB.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
Proprietà Predefinito Descrizione
maxDegreeOfParallelism 8 * (numero di core disponibili) Numero intero di chiamate simultanee consentite per tutte le funzioni attivate da BLOB in una determinata app per le funzioni. Il valore minimo consentito è 1.
poisonBlobThreshold 5 Numero intero di tentativi di elaborazione di un messaggio prima di spostarlo nella coda non elaborabili. Il valore minimo consentito è 1.

Passaggi successivi