Omówienie powiązań usługi Azure Blob Storage dla usługi Azure Functions

Usługa Azure Functions integruje się z usługą Azure Storage za pośrednictwem wyzwalaczy i powiązań. Integracja z usługą Blob Storage umożliwia tworzenie funkcji reagujących na zmiany w danych obiektów blob, a także odczytywanie i zapisywanie wartości.

Akcja Typ
Uruchamianie funkcji jako zmiany danych magazynu obiektów blob Wyzwalacz
Odczytywanie danych magazynu obiektów blob w funkcji Powiązanie wejściowe
Zezwalanie funkcji na zapisywanie danych magazynu obiektów blob Powiązanie wyjściowe

Instalowanie rozszerzenia

Instalowany pakiet NuGet rozszerzenia zależy od trybu języka C#, którego używasz w aplikacji funkcji:

Funkcje są wykonywane w izolowanym procesie roboczym języka C#. Aby dowiedzieć się więcej, zobacz Przewodnik dotyczący uruchamiania usługi Azure Functions w języku C# w izolowanym procesie roboczym.

Funkcjonalność rozszerzenia różni się w zależności od wersji rozszerzenia:

Ta wersja wprowadza możliwość nawiązywania połączenia przy użyciu tożsamości zamiast wpisu tajnego. Aby zapoznać się z samouczkiem dotyczącym konfigurowania aplikacji funkcji przy użyciu tożsamości zarządzanych, zobacz samouczek dotyczący tworzenia aplikacji funkcji z połączeniami opartymi na tożsamościach.

Ta wersja umożliwia powiązanie z typami z usługi Azure.Storage.Blobs. Dowiedz się więcej o tym, jak te nowe typy różnią się od WindowsAzure.Storage i Microsoft.Azure.Storage jak przeprowadzić migrację do nich z przewodnika migracji Azure.Storage.Blobs.

Dodaj rozszerzenie do projektu, instalując pakiet NuGet Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs NuGet w wersji 5.x lub nowszej.

Korzystanie z interfejsu wiersza polecenia platformy .NET:

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

Uwaga

Obiekty blob platformy Azure, kolejki platformy Azure i tabele platformy Azure używają teraz oddzielnych rozszerzeń i są przywołyane indywidualnie. Aby na przykład użyć wyzwalaczy i powiązań dla wszystkich trzech usług w aplikacji procesów izolowanych platformy .NET, należy dodać następujące pakiety do projektu:

Wcześniej rozszerzenia dostarczane razem jako Microsoft.Azure.Functions.Worker.Extensions.Storage, wersja 4.x. Ten sam pakiet ma również wersję 5.x, która odwołuje się tylko do podzielonych pakietów dla obiektów blob i kolejek. Podczas uaktualniania odwołań do pakietu ze starszych wersji może być konieczne dodatkowe odwołanie do nowego pakietu NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables . Ponadto podczas odwoływania się do tych nowszych pakietów podzielonych upewnij się, że nie odwołujesz się do starszej wersji połączonego pakietu magazynu, ponieważ spowoduje to konflikty z dwóch definicji tych samych powiązań.

Jeśli piszesz aplikację przy użyciu języka F#, musisz również skonfigurować to rozszerzenie w ramach konfiguracji uruchamiania aplikacji. W wywołaniu metody ConfigureFunctionsWorkerDefaults() lub ConfigureFunctionsWebApplication()dodaj delegata, który przyjmuje IFunctionsWorkerApplication parametr . Następnie w treści tego delegata wywołaj obiekt ConfigureBlobStorageExtension() :

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

Instalowanie pakietu

Powiązanie usługi Blob Storage jest częścią pakietu rozszerzenia określonego w pliku projektu host.json. Może być konieczne zmodyfikowanie tego pakietu, aby zmienić wersję powiązania lub jeśli pakiety nie zostały jeszcze zainstalowane. Aby dowiedzieć się więcej, zobacz pakiet rozszerzeń.

Ta wersja wprowadza możliwość nawiązywania połączenia przy użyciu tożsamości zamiast wpisu tajnego. Aby zapoznać się z samouczkiem dotyczącym konfigurowania aplikacji funkcji przy użyciu tożsamości zarządzanych, zobacz samouczek dotyczący tworzenia aplikacji funkcji z połączeniami opartymi na tożsamościach.

Tę wersję rozszerzenia można dodać z pakietu rozszerzeń w wersji 3, dodając lub zastępując następujący kod w host.json pliku:

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

Aby dowiedzieć się więcej, zobacz Aktualizowanie rozszerzeń.

Typy powiązań

Typy powiązań obsługiwane dla platformy .NET zależą zarówno od wersji rozszerzenia, jak i trybu wykonywania języka C#, który może być jednym z następujących elementów:

Izolowana biblioteka klas procesów roboczych skompilowana funkcja języka C# jest uruchamiana w procesie odizolowanym od środowiska uruchomieniowego.

Wybierz wersję, aby wyświetlić szczegóły typu powiązania dla trybu i wersji.

Proces izolowany proces roboczy obsługuje typy parametrów zgodnie z poniższymi tabelami.

Wyzwalacz obiektu blob

Wyzwalacz obiektu blob może być powiązany z następującymi typami:

Type Opis
string Zawartość obiektu blob jako ciąg. Użyj polecenia , gdy zawartość obiektu blob jest prostym tekstem.
byte[] Bajty zawartości obiektu blob.
Typy serializowalne w formacie JSON Gdy obiekt blob zawiera dane JSON, usługa Functions próbuje wykonać deserializacji danych JSON w zwykły typ obiektu CLR (POCO).
Strumień1 Strumień wejściowy zawartości obiektu blob.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Klient połączony z obiektem blob. Ten zestaw typów oferuje największą kontrolę przetwarzania obiektu blob i może służyć do zapisywania z powrotem do obiektu blob, jeśli połączenie ma wystarczające uprawnienia.

1 Aby użyć tych typów, należy odwołać się do elementów Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 lub nowszych oraz typowych zależności dla powiązań typu zestawu SDK.

Powiązanie wejściowe obiektu blob

Jeśli chcesz, aby funkcja przetwarzała pojedynczy obiekt blob, powiązanie wejściowe obiektu blob może wiązać się z następującymi typami:

Type Opis
string Zawartość obiektu blob jako ciąg. Użyj polecenia , gdy zawartość obiektu blob jest prostym tekstem.
byte[] Bajty zawartości obiektu blob.
Typy serializowalne w formacie JSON Gdy obiekt blob zawiera dane JSON, usługa Functions próbuje wykonać deserializacji danych JSON w zwykły typ obiektu CLR (POCO).
Strumień1 Strumień wejściowy zawartości obiektu blob.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Klient połączony z obiektem blob. Ten zestaw typów oferuje największą kontrolę przetwarzania obiektu blob i może służyć do zapisywania zwrotnego, jeśli połączenie ma wystarczające uprawnienia.

Jeśli chcesz, aby funkcja przetwarzała wiele obiektów blob z kontenera, powiązanie wejściowe obiektu blob może wiązać się z następującymi typami:

Type Opis
T[] lub List<T> gdzie T jest jednym z typów powiązań wejściowych pojedynczego obiektu blob Tablica lub lista wielu obiektów blob. Każdy wpis reprezentuje jeden obiekt blob z kontenera. Można również powiązać z dowolnymi interfejsami zaimplementowane przez te typy, takie jak IEnumerable<T>.
BlobContainerClient1 Klient połączony z kontenerem. Ten typ oferuje największą kontrolę przetwarzania kontenera i może służyć do zapisywania w nim, jeśli połączenie ma wystarczające uprawnienia.

1 Aby użyć tych typów, należy odwołać się do elementów Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 lub nowszych oraz typowych zależności dla powiązań typu zestawu SDK.

Powiązanie wyjściowe obiektu blob

Jeśli chcesz, aby funkcja zapisywała w jednym obiekcie blob, powiązanie wyjściowe obiektu blob może wiązać się z następującymi typami:

Type Opis
string Zawartość obiektu blob jako ciąg. Użyj polecenia , gdy zawartość obiektu blob jest prostym tekstem.
byte[] Bajty zawartości obiektu blob.
Typy serializowalne w formacie JSON Obiekt reprezentujący zawartość obiektu blob JSON. Funkcje próbują serializować zwykły typ obiektu CLR (POCO) do danych JSON.

Jeśli chcesz, aby funkcja zapisywała w wielu obiektach blob, powiązanie wyjściowe obiektu blob może wiązać się z następującymi typami:

Type Opis
T[] gdzie T jest jednym z typów powiązań wyjściowych pojedynczego obiektu blob Tablica zawierająca zawartość dla wielu obiektów blob. Każdy wpis reprezentuje zawartość jednego obiektu blob.

W przypadku innych scenariuszy danych wyjściowych utwórz typy i użyj ich bezpośrednio z witryny Azure.Storage.Blobs .

ustawienia host.json

W tej sekcji opisano ustawienia konfiguracji aplikacji funkcji dostępne dla funkcji korzystających z tego powiązania. Te ustawienia mają zastosowanie tylko w przypadku korzystania z rozszerzenia w wersji 5.0.0 lub nowszej. Poniższy przykładowy plik host.json zawiera tylko ustawienia wersji 2.x+ dla tego powiązania. Aby uzyskać więcej informacji na temat ustawień konfiguracji aplikacji funkcji w wersjach 2.x i nowszych, zobacz host.json dokumentacja usługi Azure Functions.

Uwaga

Ta sekcja nie dotyczy wersji rozszerzeń przed wersją 5.0.0. W przypadku tych wcześniejszych wersji nie ma żadnych ustawień konfiguracji dla obiektów blob obejmujących całą aplikację funkcji.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
Właściwości Domyślny opis
Maxdegreeofparallelism 8 * (liczba dostępnych rdzeni) Liczba całkowita współbieżnych wywołań dozwolonych dla wszystkich funkcji wyzwalanych przez obiekty blob w danej aplikacji funkcji. Minimalna dozwolona wartość to 1.
poisonBlobThreshold 5 Liczba całkowita liczby prób przetworzenia komunikatu przed przeniesieniem go do kolejki trucizny. Minimalna dozwolona wartość to 1.

Następne kroki