Udostępnij za pośrednictwem


Samouczek języka JavaScript: przekazywanie i analizowanie pliku za pomocą usług Azure Functions i Blob Storage

Z tego samouczka dowiesz się, jak przekazać obraz do usługi Azure Blob Storage i przetworzyć go przy użyciu usług Azure Functions, przetwarzanie obrazów i Cosmos DB. Dowiesz się również, jak zaimplementować wyzwalacze i powiązania funkcji platformy Azure w ramach tego procesu. Razem te usługi analizują przekazany obraz zawierający tekst, wyodrębniają z niego tekst, a następnie przechowują tekst w wierszu bazy danych na potrzeby późniejszej analizy lub innych celów.

Azure Blob Storage to wysoce skalowalne rozwiązanie magazynu obiektów firmy Microsoft dla chmury. Usługa Blob Storage jest przeznaczona do przechowywania obrazów i dokumentów, przesyłania strumieniowego plików multimedialnych, zarządzania danymi kopii zapasowych i archiwizowania oraz wiele innych. Więcej informacji na temat usługi Blob Storage można uzyskać na stronie przeglądu.

Ostrzeżenie

Ten samouczek jest przeznaczony do szybkiego wdrażania i w związku z tym nie spełnia wymagań dotyczących bezpieczeństwa domyślnie. Aby dowiedzieć się więcej na temat tego scenariusza z celem bezpiecznym domyślnie, przejdź do sekcji Zagadnienia dotyczące zabezpieczeń.

Usługa Azure Cosmos DB to w pełni zarządzana baza danych NoSQL i relacyjna baza danych do tworzenia nowoczesnych aplikacji.

Azure Functions to bezserwerowe rozwiązanie komputerowe, które umożliwia pisanie i uruchamianie małych bloków kodu jako wysoce skalowalnych, bezserwerowych, opartych na zdarzeniach funkcji. Więcej informacji na temat usługi Azure Functions można uzyskać na stronie przeglądu.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Przekazywanie obrazów i plików do usługi Blob Storage
  • Używanie wyzwalacza zdarzenia funkcji platformy Azure do przetwarzania danych przekazanych do usługi Blob Storage
  • Analizowanie obrazu za pomocą usług azure AI
  • Zapisywanie danych w usłudze Cosmos DB przy użyciu powiązań wyjściowych funkcji platformy Azure

Diagram architektury przedstawiający obiekt blob obrazu jest dodawany do usługi Blob Storage, a następnie analizowany przez funkcję platformy Azure z analizą wstawioną do usługi Cosmos DB.

Wymagania wstępne

Tworzenie konta magazynu i kontenera

Pierwszym krokiem jest utworzenie konta magazynu, które będzie przechowywać przekazane dane obiektu blob, które w tym scenariuszu będą obrazami zawierającymi tekst. Konto magazynu oferuje kilka różnych usług, ale ten samouczek korzysta tylko z usługi Blob Storage.

  1. W programie Visual Studio Code wybierz Ctrl + Shift + P, aby otworzyć paletę poleceń.

  2. Wyszukaj usługę Azure Storage: Utwórz konto magazynu (zaawansowane).

  3. Użyj poniższej tabeli, aby utworzyć zasób magazynu.

    Ustawienie Wartość
    Nazwa/nazwisko Wprowadź wartość msdocsstoragefunction lub coś podobnego.
    Grupa zasobów Utwórz utworzoną wcześniej grupę msdocs-storage-function zasobów.
    Statyczny hosting internetowy L.p.
  4. W programie Visual Studio Code wybierz pozycję Shift + Alt + A, aby otworzyć eksploratora platformy Azure.

  5. Rozwiń sekcję Magazyn , rozwiń węzeł subskrypcji i poczekaj na utworzenie zasobu.

Tworzenie kontenera w programie Visual Studio Code

  1. Nadal w Eksploratorze Platformy Azure z odnalezionym nowym zasobem usługi Storage rozwiń zasób, aby wyświetlić węzły.
  2. Kliknij prawym przyciskiem myszy pozycję Kontenery obiektów blob i wybierz pozycję Utwórz kontener obiektów blob.
  3. Wprowadź nazwę images. Spowoduje to utworzenie prywatnego kontenera.

Zmiana z prywatnego na publiczny kontener w witrynie Azure Portal

Ta procedura oczekuje kontenera publicznego. Aby zmienić konfigurację, wprowadź zmianę w witrynie Azure Portal.

  1. Kliknij prawym przyciskiem myszy zasób magazynu w Eksploratorze Platformy Azure i wybierz polecenie Otwórz w portalu.
  2. W sekcji Magazyn danych wybierz pozycję Kontenery.
  3. Znajdź kontener , imagesi wybierz (wielokropek ... ) na końcu wiersza.
  4. Wybierz pozycję Zmień poziom dostępu.
  5. Wybierz pozycję Blob (anonimowy dostęp do odczytu dla obiektów blob tylko wtedy wybierz przycisk OK.
  6. Wróć do programu Visual Studio Code.

Pobieranie parametry połączenia w programie Visual Studio Code

  1. W programie Visual Studio Code wybierz pozycję Shift + Alt + A, aby otworzyć eksploratora platformy Azure.
  2. Kliknij prawym przyciskiem myszy zasób magazynu i wybierz polecenie Kopiuj parametry połączenia.
  3. wklej to gdzieś, aby użyć go później.
  4. Zanotuj również nazwę msdocsstoragefunction konta magazynu do późniejszego użycia.

Tworzenie usługi Azure AI Vision

Następnie utwórz konto usługi Azure AI Vision, które będzie przetwarzać przekazane pliki. Usługa Vision jest częścią usług Azure AI i oferuje różne funkcje do wyodrębniania danych z obrazów. Więcej informacji na temat usługi Azure AI Vision można uzyskać na stronie przeglądu.

  1. Na pasku wyszukiwania w górnej części portalu wyszukaj pozycję Komputer i wybierz wynik z etykietą Przetwarzanie obrazów.

  2. Na stronie Przetwarzanie obrazów wybierz pozycję + Utwórz.

  3. Na stronie Tworzenie przetwarzanie obrazów wprowadź następujące wartości:

    • Subskrypcja: wybierz żądaną subskrypcję.
    • Grupa zasobów: użyj utworzonej msdocs-storage-function wcześniej grupy zasobów.
    • Region: wybierz region, który znajduje się najbliżej Ciebie.
    • Nazwa: wprowadź w nazwie .msdocscomputervision
    • Warstwa cenowa: wybierz pozycję Bezpłatna , jeśli jest dostępna, w przeciwnym razie wybierz pozycję Standardowa S1.
    • Zaznacz pole Powiadomienie o odpowiedzialnej sztucznej inteligencji, jeśli zgadzasz się na warunki

    Zrzut ekranu przedstawiający sposób tworzenia nowej usługi przetwarzanie obrazów.

  4. Wybierz pozycję Przejrzyj i utwórz u dołu. Na platformie Azure trwa chwilę na zweryfikowanie wprowadzonych informacji. Po zweryfikowaniu ustawień wybierz pozycję Utwórz, a platforma Azure rozpocznie aprowizowanie usługi przetwarzanie obrazów, co może chwilę potrwać.

  5. Po zakończeniu operacji wybierz pozycję Przejdź do zasobu.

Pobieranie kluczy przetwarzanie obrazów

Następnie musimy znaleźć klucz tajny i adres URL punktu końcowego dla usługi przetwarzanie obrazów do użycia w naszej aplikacji funkcji platformy Azure.

  1. Na stronie przeglądu przetwarzanie obrazów wybierz pozycję Klucze i punkt końcowy.

  2. Na stronie Klucze i punkt końcowy skopiuj wartość Klucz 1 i wartości programu EndPoint i wklej je gdzieś, aby użyć ich później. Punkt końcowy powinien mieć format https://YOUR-RESOURCE-NAME.cognitiveservices.azure.com/

Zrzut ekranu przedstawiający sposób pobierania kluczy i punktu końcowego adresu URL dla usługi przetwarzanie obrazów.

Tworzenie konta usługi Cosmos DB

Utwórz konto usługi Cosmos DB, aby przechowywać analizę plików. Usługa Azure Cosmos DB to w pełni zarządzana baza danych NoSQL i relacyjna baza danych do tworzenia nowoczesnych aplikacji. Więcej informacji o usłudze Cosmos DB i jego interfejsach API pomocy technicznej dla kilku różnych branżowych baz danych.

Chociaż ten samouczek określa interfejs API podczas tworzenia zasobu, powiązania funkcji platformy Azure dla usługi Cosmos DB są konfigurowane w taki sam sposób dla wszystkich interfejsów API usługi Cosmos DB.

  1. Na pasku wyszukiwania w górnej części portalu wyszukaj pozycję Azure Cosmos DB i wybierz wynik.

  2. Na stronie Azure Cosmos DB wybierz pozycję + Utwórz. Wybierz pozycję Azure Cosmos DB for NoSQL z listy opcji interfejsu API.

  3. Na stronie Tworzenie usługi Cosmos DB wprowadź następujące wartości:

    • Subskrypcja: wybierz żądaną subskrypcję.
    • Grupa zasobów: użyj utworzonej msdocs-storage-function wcześniej grupy zasobów.
    • Region: wybierz ten sam region co grupa zasobów.
    • Nazwa: wprowadź w nazwie .msdocscosmosdb
    • Warstwa cenowa: wybierz pozycję Bezpłatna , jeśli jest dostępna, w przeciwnym razie wybierz pozycję Standardowa S1.
  4. Wybierz pozycję Przejrzyj i utwórz u dołu. Platforma Azure zajmie trochę czasu na zweryfikowanie wprowadzonych informacji. Po zweryfikowaniu ustawień wybierz pozycję Utwórz, a platforma Azure rozpocznie aprowizowanie usługi przetwarzanie obrazów, co może chwilę potrwać.

  5. Po zakończeniu operacji wybierz pozycję Przejdź do zasobu.

  6. Wybierz pozycję Eksplorator danych, a następnie wybierz pozycję Nowy kontener.

  7. Utwórz nową bazę danych i kontener z następującymi ustawieniami:

    • Utwórz nowy identyfikator bazy danych: StorageTutorial.
    • Wprowadź nowy identyfikator kontenera: analysis.
    • Wprowadź klucz partycji: /type.
  8. Pozostaw pozostałe ustawienia domyślne i wybierz przycisk OK.

Pobieranie parametry połączenia usługi Cosmos DB

Pobierz parametry połączenia dla konta usługi Cosmos DB do użycia w naszej aplikacji funkcji platformy Azure.

  1. Na stronie przeglądu usługi Cosmos DB wybierz pozycję Klucze.

  2. Na stronie Klucze skopiuj podstawowe parametry połączenia, aby użyć ich później.

Pobieranie i konfigurowanie przykładowego projektu

Kod funkcji platformy Azure używany w tym samouczku można znaleźć w tym repozytorium GitHub w podkatalogu JavaScript-v4 . Możesz również sklonować projekt przy użyciu poniższego polecenia.

git clone https://github.com/Azure-Samples/msdocs-storage-bind-function-service.git \
cd msdocs-storage-bind-function-service/javascript-v4 \
code .

Przykładowy projekt wykonuje następujące zadania:

  • Pobiera zmienne środowiskowe w celu nawiązania połączenia z kontem magazynu, przetwarzanie obrazów i usługą Cosmos DB
  • Akceptuje przekazany plik jako parametr obiektu blob
  • Analizuje obiekt blob przy użyciu usługi przetwarzanie obrazów
  • Wstawia analizowany tekst obrazu jako obiekt JSON do usługi Cosmos DB przy użyciu powiązań wyjściowych

Po pobraniu i otwarciu projektu należy zrozumieć kilka podstawowych pojęć:

Pojęcie Purpose
Function Funkcja platformy Azure jest definiowana zarówno przez kod funkcji, jak i powiązania. Znajdują się one w pliku ./src/functions/process-blobs.js.
Wyzwalacze i powiązania Wyzwalacze i powiązania wskazują, że dane, które są oczekiwane do lub z funkcji oraz które usługi będą wysyłać lub odbierać te dane.

Wyzwalacze i powiązania używane w tym samouczku w celu przyspieszenia procesu programowania przez usunięcie konieczności pisania kodu w celu nawiązania połączenia z usługami.

Wyzwalacz obiektu blob usługi Input Storage

Kod określający, że funkcja jest wyzwalana po przekazaniu obiektu blob do kontenera images . Funkcja jest wyzwalana dla dowolnej nazwy obiektu blob, w tym folderów hierarchicznych.


// ...preceding code removed for brevity

app.storageBlob('process-blob-image', { 
    path: 'images/{name}',                // Storage container name: images, Blob name: {name}
    connection: 'StorageConnection',      // Storage account connection string
    handler: async (blob, context) => {

// ... function code removed for brevity
  • app.storageBlob — wyzwalacz wejściowy obiektu blob usługi Storage służy do powiązania funkcji ze zdarzeniem przekazywania w usłudze Blob Storage. Wyzwalacz ma dwa wymagane parametry:
    • path: ścieżka wyzwalacza obserwuje zdarzenia. Ścieżka zawiera nazwęimages kontenera i podstawianie zmiennej dla nazwy obiektu blob. Ta nazwa obiektu blob jest pobierana z name właściwości .
    • {name}: nazwa przekazanego obiektu blob. Użycie parametru blob to nazwa parametru dla obiektu blob wchodzącego do funkcji. Nie zmieniaj wartości blob.
    • connection: parametry połączenia konta magazynu. Wartość StorageConnection jest zgodna z nazwą w pliku podczas tworzenia lokalnego local.settings.json .

Wyzwalacz wyjściowej usługi Cosmos DB

Po zakończeniu działania funkcji funkcja używa zwróconego obiektu jako danych do wstawiania do usługi Cosmos DB.


// ... function definition ojbect
app.storageBlob('process-blob-image', { 
    
        // removed for brevity    
        
        // Data to insert into Cosmos DB
        const id = uuidv4().toString();
        const analysis = await analyzeImage(blobUrl);
        
        // `type` is the partition key 
        const dataToInsertToDatabase = {
                id,
                type: 'image',
                blobUrl,
                blobSize: blob.length,
                analysis,
                trigger: context.triggerMetadata
            }

        return dataToInsertToDatabase;
    }),

    // Output binding for Cosmos DB
    return: output.cosmosDB({
        connection: 'CosmosDBConnection',
        databaseName:'StorageTutorial',
        containerName:'analysis'
    })
});

W przypadku kontenera w tym artykule są następujące wymagane właściwości:

  • id: identyfikator wymagany do utworzenia nowego wiersza przez usługę Cosmos DB.

  • /type: klucz partycji określony za pomocą kontenera został utworzony.

  • output.cosmosDBwyzwalacz danych wyjściowych usługi Cosmos DB służy do wstawiania wyniku funkcji do usługi Cosmos DB.

    • connection: parametry połączenia konta magazynu. Wartość StorageConnection jest zgodna z nazwą w local.settings.json pliku.
    • databaseName: baza danych Cosmos DB do nawiązania połączenia.
    • containerName: nazwa tabeli do zapisania przeanalizowanej wartości tekstowej obrazu zwróconej przez funkcję. Tabela musi już istnieć.

Kod funkcji platformy Azure

Poniżej znajduje się pełny kod funkcji.

const { app, input, output } = require('@azure/functions');
const { v4: uuidv4 } = require('uuid');
const { ApiKeyCredentials } = require('@azure/ms-rest-js');
const { ComputerVisionClient } = require('@azure/cognitiveservices-computervision');
const sleep = require('util').promisify(setTimeout);

const STATUS_SUCCEEDED = "succeeded";
const STATUS_FAILED = "failed"

const imageExtensions = ["jpg", "jpeg", "png", "bmp", "gif", "tiff"];

async function analyzeImage(url) {

    try {

        const computerVision_ResourceKey = process.env.ComputerVisionKey;
        const computerVision_Endpoint = process.env.ComputerVisionEndPoint;

        const computerVisionClient = new ComputerVisionClient(
            new ApiKeyCredentials({ inHeader: { 'Ocp-Apim-Subscription-Key': computerVision_ResourceKey } }), computerVision_Endpoint);

        const contents = await computerVisionClient.analyzeImage(url, {
            visualFeatures: ['ImageType', 'Categories', 'Tags', 'Description', 'Objects', 'Adult', 'Faces']
        });

        return contents;

    } catch (err) {
        console.log(err);
    }
}
app.storageBlob('process-blob-image', { 
    path: 'images/{name}',
    connection: 'StorageConnection',
    handler: async (blob, context) => {

        context.log(`Storage blob 'process-blob-image' url:${context.triggerMetadata.uri}, size:${blob.length} bytes`);

        const blobUrl = context.triggerMetadata.uri;
        const extension = blobUrl.split('.').pop();

        if(!blobUrl) {
            // url is empty
            return;
        } else if (!extension || !imageExtensions.includes(extension.toLowerCase())){
            // not processing file because it isn't a valid and accepted image extension
            return;
        } else {
            //url is image
            const id = uuidv4().toString();
            const analysis = await analyzeImage(blobUrl);
            
            // `type` is the partition key 
            const dataToInsertToDatabase = {
                    id,
                    type: 'image',
                    blobUrl,
                    blobSize: blob.length,
                    ...analysis,
                    trigger: context.triggerMetadata
                }

            return dataToInsertToDatabase;
        }

        
    },
    return: output.cosmosDB({
        connection: 'CosmosDBConnection',
        databaseName:'StorageTutorial',
        containerName:'analysis'
    })
});

Ten kod pobiera również podstawowe wartości konfiguracji ze zmiennych środowiskowych, takich jak parametry połączenia usługi Blob Storage i klucz przetwarzanie obrazów. Te zmienne środowiskowe są dodawane do środowiska funkcji platformy Azure po jej wdrożeniu.

Funkcja domyślna używa również drugiej metody o nazwie AnalyzeImage. Ten kod używa punktu końcowego adresu URL i klucza konta przetwarzanie obrazów, aby wysłać żądanie przetwarzanie obrazów w celu przetworzenia obrazu. Żądanie zwraca cały tekst odnaleziony na obrazie. Ten tekst jest zapisywany w usłudze Cosmos DB przy użyciu powiązania wychodzącego.

Konfigurowanie ustawień lokalnych

Aby uruchomić projekt lokalnie, wprowadź zmienne środowiskowe w ./local.settings.json pliku . Wypełnij wartości zastępcze wartościami zapisanymi wcześniej podczas tworzenia zasobów platformy Azure.

Mimo że kod funkcji platformy Azure działa lokalnie, łączy się z usługami opartymi na chmurze dla usługi Storage, a nie z użyciem lokalnych emulatorów.

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "AzureWebJobsStorage": "",
    "StorageConnection": "STORAGE-CONNECTION-STRING",
    "StorageAccountName": "STORAGE-ACCOUNT-NAME",
    "StorageContainerName": "STORAGE-CONTAINER-NAME",
    "ComputerVisionKey": "COMPUTER-VISION-KEY",
    "ComputerVisionEndPoint":  "COMPUTER-VISION-ENDPOINT",
    "CosmosDBConnection": "COSMOS-DB-CONNECTION-STRING"
  }
}

Tworzenie aplikacji usługi Azure Functions

Teraz możesz przystąpić do wdrażania aplikacji na platformie Azure przy użyciu rozszerzenia programu Visual Studio Code.

  1. W programie Visual Studio Code wybierz pozycję Shift + Alt + A, aby otworzyć eksploratora platformy Azure.

  2. W sekcji Funkcje znajdź i kliknij prawym przyciskiem myszy subskrypcję, a następnie wybierz pozycję Utwórz aplikację funkcji na platformie Azure (zaawansowane).

  3. Użyj poniższej tabeli, aby utworzyć zasób funkcji.

    Ustawienie Wartość
    Nazwa/nazwisko Wprowadź ciąg msdocsprocessimage lub coś podobnego.
    Stos środowiska uruchomieniowego Wybierz wersję Node.js LTS.
    Model programowania Wybierz pozycję v4.
    System operacyjny Wybierz pozycję Linux.
    Grupa zasobów Wybierz utworzoną wcześniej grupę msdocs-storage-function zasobów.
    Lokalizacja Wybierz ten sam region co grupa zasobów.
    Typ planu Wybierz pozycję Zużycie.
    Azure Storage Wybierz utworzone wcześniej konto usługi magazynu.
    Application Insights Pomiń na razie.
  4. Platforma Azure aprowizuje żądane zasoby, co potrwa kilka chwil.

Wdrażanie aplikacji usługi Azure Functions

  1. Po zakończeniu poprzedniego procesu tworzenia zasobów kliknij prawym przyciskiem myszy nowy zasób w sekcji Funkcje eksploratora platformy Azure i wybierz polecenie Wdróż w aplikacji funkcji.
  2. Jeśli zostanie wyświetlony monit Czy na pewno chcesz wdrożyć..., wybierz pozycję Wdróż.
  3. Po zakończeniu procesu zostanie wyświetlone powiadomienie z wyborem obejmującym ustawienia przekazywania. Wybierz tę opcję. Spowoduje to skopiowanie wartości z pliku local.settings.json do aplikacji funkcji platformy Azure. Jeśli powiadomienie zniknęło przed jego wybraniem, przejdź do następnej sekcji.

Dodawanie ustawień aplikacji dla usługi Storage i przetwarzanie obrazów

Jeśli w powiadomieniu wybrano pozycję Przekaż ustawienia , pomiń tę sekcję.

Funkcja platformy Azure została pomyślnie wdrożona, ale nie może jeszcze nawiązać połączenia z naszym kontem magazynu i przetwarzanie obrazów usług. Prawidłowe klucze i parametry połączenia należy najpierw dodać do ustawień konfiguracji aplikacji usługi Azure Functions.

  1. Znajdź zasób w sekcji Funkcje eksploratora platformy Azure, kliknij prawym przyciskiem myszy pozycję Ustawienia aplikacji i wybierz pozycję Dodaj nowe ustawienie.

  2. Wprowadź nowe ustawienie aplikacji dla następujących wpisów tajnych. Skopiuj i wklej wartości wpisów tajnych z projektu lokalnego local.settings.json w pliku .

    Ustawienie
    StorageConnection
    StorageAccountName
    StorageContainerName
    ComputerVisionKey
    ComputerVisionEndPoint
    CosmosDBConnection

Wszystkie wymagane zmienne środowiskowe do połączenia naszej funkcji platformy Azure z różnymi usługami są teraz dostępne.

Przekazywanie obrazu do usługi Blob Storage

Teraz możesz przetestować naszą aplikację! Możesz przekazać obiekt blob do kontenera, a następnie sprawdzić, czy tekst na obrazie został zapisany w usłudze Cosmos DB.

  1. W Eksploratorze platformy Azure w programie Visual Studio Code znajdź i rozwiń zasób usługi Storage w sekcji Storage .
  2. Rozwiń węzeł Kontenery obiektów blob i kliknij prawym przyciskiem myszy nazwę kontenera, imagesa następnie wybierz pozycję Przekaż pliki.
  3. Możesz znaleźć kilka przykładowych obrazów zawartych w folderze images w katalogu głównym przykładowego projektu do pobrania lub użyć własnego.
  4. W katalogu Destination zaakceptuj wartość /domyślną .
  5. Poczekaj, aż pliki zostaną przekazane i wyświetlone w kontenerze.

Wyświetlanie analizy tekstu obrazu

Następnie możesz sprawdzić, czy przekazywanie wyzwoliło funkcję platformy Azure i czy tekst na obrazie został przeanalizowany i zapisany w usłudze Cosmos DB prawidłowo.

  1. W programie Visual Studio Code w Eksploratorze Platformy Azure w węźle Azure Cosmos DB wybierz zasób i rozwiń go, aby znaleźć bazę danych StorageTutorial.

  2. Rozwiń węzeł bazy danych.

  3. Kontener analizy powinien być teraz dostępny. Wybierz węzeł Dokumenty kontenera, aby wyświetlić podgląd danych wewnątrz. Powinien zostać wyświetlony wpis dla przetworzonego tekstu obrazu przekazanego pliku.

    {
        "id": "3cf7d6f0-a362-421e-9482-3020d7d1e689",
        "type": "image",
        "blobUrl": "https://msdocsstoragefunction.blob.core.windows.net/images/presentation.png",
        "blobSize": 1383614,
        "analysis": {  ... details removed for brevity ...
            "categories": [],
            "adult": {},
            "imageType": {},
            "tags": [],
            "description": {},
            "faces": [],
            "objects": [],
            "requestId": "eead3d60-9905-499c-99c5-23d084d9cac2",
            "metadata": {},
            "modelVersion": "2021-05-01"
        },
        "trigger": { 
            "blobTrigger": "images/presentation.png",
            "uri": "https://msdocsstorageaccount.blob.core.windows.net/images/presentation.png",
            "properties": {
                "lastModified": "2023-07-07T15:32:38+00:00",
                "createdOn": "2023-07-07T15:32:38+00:00",
                "metadata": {},
                ... removed for brevity ...
                "contentLength": 1383614,
                "contentType": "image/png",
                "accessTier": "Hot",
                "accessTierInferred": true,
            },
            "metadata": {},
            "name": "presentation.png"
        },
        "_rid": "YN1FAKcZojEFAAAAAAAAAA==",
        "_self": "dbs/YN1FAA==/colls/YN1FAKcZojE=/docs/YN1FAKcZojEFAAAAAAAAAA==/",
        "_etag": "\"7d00f2d3-0000-0700-0000-64a830210000\"",
        "_attachments": "attachments/",
        "_ts": 1688743969
    }
    

Gratulacje! Udało Ci się przetwarzać obraz przekazany do usługi Blob Storage przy użyciu usługi Azure Functions i przetwarzanie obrazów.

Rozwiązywanie problemów

Skorzystaj z poniższej tabeli, aby rozwiązać problemy podczas tej procedury.

Problem Rozwiązanie
await computerVisionClient.read(url); błędy z Only absolute URLs are supported Upewnij się, że ComputerVisionEndPoint punkt końcowy ma format https://YOUR-RESOURCE-NAME.cognitiveservices.azure.com/.

Zagadnienia dotyczące zabezpieczeń

To rozwiązanie, jako samouczek dla początkujących, nie demonstruje praktyk bezpiecznych domyślnie. Jest to zamierzone, aby umożliwić pomyślne wdrożenie rozwiązania. Następnym krokiem po pomyślnym wdrożeniu jest zabezpieczenie zasobów. To rozwiązanie korzysta z trzech usług platformy Azure, z których każdy ma własne funkcje zabezpieczeń i zagadnienia dotyczące konfiguracji zabezpieczeń domyślnie:

Przykładowy kod

Czyszczenie zasobów

Jeśli nie zamierzasz nadal korzystać z tej aplikacji, możesz usunąć utworzone zasoby, usuwając grupę zasobów.

  1. Wybieranie grup zasobów w eksploratorze platformy Azure
  2. Znajdź i kliknij prawym przyciskiem myszy grupę msdocs-storage-function zasobów z listy.
  3. Wybierz Usuń. Proces usuwania grupy zasobów może potrwać kilka minut.