Samouczek Krok 2. Automatyzowanie zmiany rozmiaru przekazanych obrazów przy użyciu usługi Event Grid

Ten samouczek rozszerza samouczek Przekazywanie danych obrazu w chmurze za pomocą usługi Azure Storage, aby dodać bezserwerowe automatyczne generowanie miniatur przy użyciu Azure Event Grid i Azure Functions. Oto ogólny przepływ pracy:

W tym samouczku wykonasz następujące czynności:

  • Tworzenie konta usługi Azure Storage
  • Tworzenie, konfigurowanie i wdrażanie aplikacji funkcji
  • Tworzenie subskrypcji zdarzeń do magazynu
  • Testowanie przykładowej aplikacji

Wymagania wstępne

W celu ukończenia tego samouczka:

Tworzenie konta usługi Azure Storage

Usługa Azure Functions wymaga konta magazynu ogólnego. Oprócz konta usługi Blob Storage utworzonego w poprzednim samouczku utwórz oddzielne konto magazynu ogólnego w grupie zasobów. Nazwy kont usługi Storage muszą mieć długość od 3 do 24 znaków i mogą zawierać tylko cyfry i małe litery.

Ustaw zmienne, aby przechowywać nazwę grupy zasobów utworzonej w poprzednim samouczku, lokalizację zasobów do utworzenia oraz nazwę nowego konta magazynu, które Azure Functions wymaga. Następnie utwórz konto magazynu dla funkcji platformy Azure.

Użyj polecenia az storage account create .

Uwaga

Użyj następujących poleceń w powłoce Bash Cloud Shell. W razie potrzeby użyj listy upuszczania utonięcia w lewym górnym rogu Cloud Shell, aby przełączyć się do powłoki Bash.

Uruchom następujące polecenia, aby utworzyć konto usługi Azure Storage.

functionstorage="funcstorage$RANDOM"
az storage account create --name $functionstorage --location $region --resource-group $rgName --sku Standard_LRS --kind StorageV2  --allow-blob-public-access true

Tworzenie aplikacji funkcji

Do obsługi wykonywania funkcji potrzebna jest aplikacja funkcji. Aplikacja funkcji zapewnia środowisko do bezserwerowego wykonywania kodu funkcji. W poniższym poleceniu podaj własną, unikatową nazwę aplikacji funkcji. Nazwa aplikacji funkcji jest używana jako domyślna domena DNS aplikacji funkcji, więc nazwa ta musi być unikatowa wśród wszystkich aplikacji na platformie Azure. Określ nazwę aplikacji funkcji, która ma zostać utworzona, a następnie utwórz funkcję platformy Azure.

Utwórz aplikację funkcji przy użyciu polecenia az functionapp create.

functionapp="funcapp$RANDOM"
az functionapp create --name $functionapp --storage-account $functionstorage --resource-group $rgName --consumption-plan-location $region --functions-version 4

Teraz skonfiguruj aplikację funkcji w celu nawiązania połączenia z kontem usługi Blob Storage utworzonym w poprzednim samouczku.

Konfigurowanie aplikacji funkcji

Funkcja wymaga poświadczeń dla konta usługi Blob Storage, które są dodawane do ustawień aplikacji funkcji przy użyciu polecenia az functionapp config appsettings set lub Update-AzFunctionAppSetting .

storageConnectionString=$(az storage account show-connection-string --resource-group $rgName --name $blobStorageAccount --query connectionString --output tsv)

az functionapp config appsettings set --name $functionapp --resource-group $rgName --settings AzureWebJobsStorage=$storageConnectionString THUMBNAIL_CONTAINER_NAME=thumbnails THUMBNAIL_WIDTH=100 FUNCTIONS_EXTENSION_VERSION=~2 FUNCTIONS_WORKER_RUNTIME=dotnet

Ustawienie FUNCTIONS_EXTENSION_VERSION=~2 sprawia, że aplikacja funkcji jest uruchamiana w ramach wersji 2.x środowiska uruchomieniowego usługi Azure Functions. Teraz możesz wdrożyć projekt kodu funkcji do tej aplikacji funkcji.

Wdrażanie kodu funkcji

Przykładowa funkcja zmiany rozmiaru w formacie C# jest dostępna w usłudze GitHub. Wdróż ten projekt kodu w aplikacji funkcji, używając polecenia az functionapp deployment source config.

az functionapp deployment source config --name $functionapp --resource-group $rgName --branch master --manual-integration --repo-url https://github.com/Azure-Samples/function-image-upload-resize

Funkcja zmiany rozmiaru obrazu jest wyzwalana przez żądania HTTP wysyłane do niej z usługi Event Grid. Utwórz subskrypcję zdarzeń, aby określić w usłudze Event Grid, że chcesz otrzymywać te powiadomienia pod adresem URL funkcji. W tym samouczku subskrybujesz zdarzenia utworzone przez obiekty blob.

Dane przekazane do funkcji z powiadomienia usługi Event Grid zawierają adres URL obiektu blob. Ten adres URL jest następnie przekazywany do powiązania wejściowego w celu pobrania przekazanego obrazu z magazynu Blob Storage. Funkcja generuje obraz miniatury i zapisuje wynikowy strumień do oddzielnego kontenera w usłudze Blob Storage.

Ten projekt używa wartości EventGridTrigger dla typu wyzwalacza. Zamiast ogólnych wyzwalaczy HTTP zaleca się korzystanie z wyzwalacza usługi Event Grid. Usługa Event Grid automatycznie weryfikuje wyzwalacze funkcji usługi Event Grid. W przypadku ogólnych wyzwalaczy HTTP trzeba zaimplementować odpowiedź weryfikacji.

Aby dowiedzieć się więcej na temat tej funkcji, zobacz pliki function.json i run.csx.

Kod projektu funkcji jest wdrażany bezpośrednio z publicznego przykładowego repozytorium. Aby dowiedzieć się więcej na temat opcji wdrażania dla usługi Azure Functions, zobacz Ciągłe wdrażanie dla usługi Azure Functions.

Tworzenie subskrypcji zdarzeń

Subskrypcja zdarzeń wskazuje, które zdarzenia generowane przez dostawcę mają być wysyłane do określonego punktu końcowego. W tym przypadku punkt końcowy jest uwidaczniany przez Twoją funkcję. Poniżej przedstawiono procedurę tworzenia subskrypcji zdarzeń wysyłającej powiadomienia do funkcji w witrynie Azure Portal:

  1. W Azure Portal w górnej części strony wyszukaj i wybierz i wybierz Function App utworzoną aplikację funkcji. Wybierz pozycję Funkcje i wybierz funkcję Thumbnail .

    Wybieranie funkcji Thumbnail w portalu

  2. Wybierz pozycję Integracja , a następnie wybierz wyzwalacz usługi Event Grid i wybierz pozycję Utwórz subskrypcję usługi Event Grid.

    Przejdź do pozycji Dodawanie subskrypcji usługi Event Grid w Azure Portal

  3. Użyj ustawień subskrypcji zdarzeń w sposób określony w tabeli poniżej.

    Tworzenie subskrypcji zdarzeń z funkcji w witrynie Azure Portal

    Ustawienie Sugerowana wartość Opis
    Nazwa imageresizersub Nazwa identyfikująca nową subskrypcję zdarzeń.
    Typ tematu Konta magazynu Wybierz dostawcę zdarzeń konta usługi Storage.
    Subskrypcja Twoja subskrypcja platformy Azure Domyślnie jest wybrana Twoja bieżąca subskrypcja platformy Azure.
    Grupa zasobów myResourceGroup Wybierz pozycję Użyj istniejącej i wybierz grupę zasobów używaną w tym samouczku.
    Zasób Konto usługi Blob Storage Wybierz konto usługi Blob Storage, na którym są przechowywane obrazy, a nie konto używane przez aplikację funkcji platformy Azure.
    Nazwa tematu systemowego imagestoragesystopic Określ nazwę tematu systemowego. Aby dowiedzieć się więcej o tematach systemowych, zobacz Omówienie tematów systemowych.
    Typy zdarzeń Utworzony obiekt blob Anuluj zaznaczenie wszystkich typów innych niż Utworzony obiekt blob. Tylko typy zdarzeń Microsoft.Storage.BlobCreated są przekazywane do funkcji.
    Typ punktu końcowego generowany automatycznie Wstępnie zdefiniowane jako funkcja platformy Azure.
    Punkt końcowy generowany automatycznie Nazwa funkcji. W tym przypadku jest to Miniatura.
  4. Przejdź do karty Filtry i wykonaj następujące czynności:

    1. Zaznacz pole wyboru Enable subject filtering (Włącz filtrowanie tematów).

    2. W polu Temat zaczyna się od, wprowadź następującą wartość: /blobServices/default/containers/images/.

      Określ filtr dla subskrypcji zdarzeń

  5. Wybierz pozycję Utwórz , aby dodać subskrypcję zdarzeń, aby utworzyć subskrypcję zdarzeń, która wyzwala Thumbnail funkcję po dodaniu obiektu blob do kontenera images . Funkcja zmieni rozmiar obrazów i doda je do kontenera thumbnails.

Ponieważ usługi zaplecza zostały już skonfigurowane, można przetestować funkcję zmieniania rozmiaru obrazów w przykładowej aplikacji internetowej.

Testowanie przykładowej aplikacji

Aby przetestować zmienianie rozmiaru obrazów w aplikacji internetowej, przejdź pod adres URL Twojej opublikowanej aplikacji. Domyślnym adresem URL aplikacji internetowej jest https://<web_app>.azurewebsites.net.

Wybierz pozycję Przekaż zdjęcia , aby wybrać i przekazać plik. Możesz także przeciągnąć zdjęcia do tego obszaru.

Zwróć uwagę, że po zniknięciu przekazanego obrazu kopia przekazanego obrazu jest wyświetlana w karuzeli Generated Thumbnails . Rozmiar obrazu został zmieniony przez funkcję, obraz został dodany do kontenera thumbnails i pobrany przez klienta internetowego.

Zrzut ekranu przedstawiający opublikowaną aplikację internetową zatytułowaną

Następne kroki

Zobacz inne samouczki w sekcji Samouczki w spisie treści.