Ręczne uruchamianie funkcji niewyzwalanej przez protokół HTTP

W tym artykule pokazano, jak ręcznie uruchomić funkcję niewyzwalaną przez protokół HTTP za pomocą specjalnie sformatowanego żądania HTTP.

W niektórych kontekstach, takich jak podczas programowania i rozwiązywania problemów, może być konieczne uruchomienie "na żądanie" funkcji platformy Azure, która jest wyzwalana pośrednio. Przykłady wyzwalaczy pośrednich obejmują funkcje zgodnie z harmonogramem lub funkcje uruchamiane w wyniku zdarzeń.

Narzędzie Postman jest używane w poniższym przykładzie, ale do wysyłania żądań HTTP można użyć narzędzia cURL, Fiddler lub innego narzędzia podobnego do wysyłania.

Procedura opisana w tym artykule jest równoważna używaniu funkcji Testuj/Uruchom na karcie Kod i testowanie funkcji w witrynie Azure Portal. Możesz również użyć programu Visual Studio Code do ręcznego uruchamiania funkcji.

Definiowanie lokalizacji żądania

Aby uruchomić funkcję niezwiązaną z protokołem HTTP, musisz wysłać żądanie do platformy Azure, aby uruchomić funkcję. Adres URL używany do wykonania tego żądania przyjmuje określoną postać.

Define the request location: host name + folder path + function name

  • Nazwa hosta: publiczna lokalizacja aplikacji funkcji, która składa się z nazwy aplikacji funkcji oraz azurewebsites.net lub domeny niestandardowej. Podczas pracy z miejscami wdrożenia używanymi do przemieszczania część nazwy hosta jest nazwą hosta produkcyjnego z dołączonym -<slotname> do niego. W poprzednim przykładzie adres URL będzie przeznaczony myfunctiondemos-staging.azurewebsites.net dla miejsca o nazwie staging.
  • Ścieżka folderu: aby uzyskać dostęp do funkcji niezwolonych przez protokół HTTP za pośrednictwem żądania HTTP, musisz wysłać żądanie za pośrednictwem ścieżki admin/functions. Interfejsy API w ścieżce /admin/ są dostępne tylko z autoryzacją.
  • Nazwa funkcji: nazwa funkcji, którą chcesz uruchomić.

Podczas przesyłania żądań do punktów końcowych administratora w aplikacji funkcji mają zastosowanie następujące kwestie:

  • Podczas przesyłania żądań do dowolnego punktu końcowego w /admin/ ścieżce należy podać klucz główny aplikacji w x-functions-key nagłówku żądania.
  • Po uruchomieniu lokalnie autoryzacja nie jest wymuszana, a klucz główny funkcji nie jest wymagany. Funkcję można wywołać bezpośrednio, pomijając nagłówek x-functions-key.
  • Podczas uzyskiwania dostępu do punktów końcowych aplikacji funkcji w miejscu wdrożenia upewnij się, że używasz nazwy hosta specyficznego dla miejsca w adresie URL żądania wraz z kluczem głównym specyficznym dla miejsca.

Pobieranie klucza głównego

Klucz główny można pobrać z witryny Azure Portal lub przy użyciu interfejsu wiersza polecenia platformy Azure.

Uwaga

Ze względu na podwyższony poziom uprawnień w aplikacji funkcji przyznany przez klucz główny nie należy udostępniać tego klucza osobom trzecim ani rozpowszechniać go w aplikacji. Klucz powinien być wysyłany tylko do punktu końcowego HTTPS.

  1. Przejdź do aplikacji funkcji w witrynie Azure Portal, wybierz pozycję Klucze aplikacji, a następnie _master klucz.

    Locate the master key to copy.

  2. W sekcji Edytowanie klucza skopiuj wartość klucza do schowka, a następnie wybierz przycisk OK.

    Copy the master key to the clipboard.

Wywołanie funkcji

  1. W witrynie Azure Portal przejdź do góry aplikacji funkcji i wybierz funkcję.

  2. Wybierz pozycję Kod i test, a następnie wybierz pozycję Dzienniki. Podczas ręcznego uruchamiania funkcji z narzędzia Postman są wyświetlane komunikaty z funkcji zarejestrowanej tutaj.

    Screenshot that shows the 'Code + Test' page with a message from the logs displayed.

  3. Otwórz narzędzie Postman (lub równoważne narzędzie do komponowania HTTP) i wprowadź lokalizację żądania w polu tekstowym Adres URL.

  4. Upewnij się, że metoda HTTP jest ustawiona na POST, wybierz kartę Nagłówki i dodaj te dwie pary klucz-wartość nagłówka:

    Key Wartość
    x-functions-key Wartość klucza głównego wklejona ze schowka.
    Content-Type application/json

    Postman headers settings.

  5. Wybierz kartę Treść i wpisz { "input": "<TRIGGER_INPUT>" } jako treść żądania.

    Postman body settings.

    <TRIGGER_INPUT> Określony element zależy od typu wyzwalacza, ale może to być tylko wartość ciągu, liczbowa lub logiczna. W przypadku usług korzystających z ładunków JSON, takich jak Azure Service Bus, testowy ładunek JSON powinien zostać usunięty i serializowany jako ciąg.

    Jeśli nie chcesz przekazywać danych wejściowych do funkcji, nadal musisz podać pusty słownik {} jako treść żądania POST. Aby uzyskać więcej informacji, zobacz artykuł referencyjny dotyczący określonego wyzwalacza innego niż HTTP.

  6. Wybierz Wyślij.

    Send a request with Postman.

    Narzędzie Postman zgłosi stan 202 Zaakceptowano.

  7. Następnie wróć do swojej funkcji w witrynie Azure Portal. Przejrzyj dzienniki i zobaczysz komunikaty pochodzące z ręcznego wywołania funkcji.

    View the logs to see the master key test results.

Sposób uzyskiwania dostępu do danych wysyłanych do wyzwalacza zależy od typu wyzwalacza i języka funkcji. Aby uzyskać więcej informacji, zobacz przykłady referencyjne dla określonego wyzwalacza.

Następne kroki