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.
Ta wersja obsługuje konfigurację wyzwalaczy i powiązań za pośrednictwem integracji platformy .NET Aspire.
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:
- Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs
- Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
- Microsoft.Azure.Functions.Worker.Extensions.Tables
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 wyjściowych utwórz obiekt BlobClient lub BlobContainerClient z innymi typami bezpośrednio z usługi Azure.Storage.Blobs. Zobacz Rejestrowanie klientów platformy Azure, aby zapoznać się z przykładem użycia wstrzykiwania zależności w celu utworzenia typu klienta z zestawu Azure SDK.
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. |