Köra en funktion som inte utlösts av HTTP manuellt

Den här artikeln visar hur du manuellt kör en icke HTTP-utlöst funktion via en särskilt formaterad HTTP-begäran.

I vissa sammanhang, till exempel under utveckling och felsökning, kan du behöva köra "på begäran" en Azure-funktion som indirekt utlöses. Exempel på indirekta utlösare är funktioner enligt ett schema eller funktioner som körs som resultat av händelser.

Postman används i följande exempel, men du kan använda cURL, Fiddler eller något annat liknande verktyg för att skicka HTTP-begäranden.

Proceduren som beskrivs i den här artikeln motsvarar användningen av test-/körningsfunktionen i en funktions kod + test-flik i Azure-portalen. Du kan också använda Visual Studio Code för att köra funktioner manuellt.

Definiera platsen för begäran

Om du vill köra en funktion som inte är HTTP-utlöst behöver du ett sätt att skicka en begäran till Azure för att köra funktionen. Den URL som används för att göra denna begäran kräver ett visst formulär.

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

  • Värdnamn: Funktionsappens offentliga plats som består av funktionsappens namn plus azurewebsites.net eller din anpassade domän. När du arbetar med distributionsplatser som används för mellanlagring är värdnamnsdelen det produktionsvärdnamn som -<slotname> läggs till. I föregående exempel skulle URL:en vara myfunctiondemos-staging.azurewebsites.net för ett fack med namnet staging.
  • Mappsökväg: För att få åtkomst till icke HTTP-utlösta funktioner via en HTTP-begäran måste du skicka begäran via sökvägen admin/functions. API:er under /admin/ sökvägen är endast tillgängliga med auktorisering.
  • Funktionsnamn: Namnet på den funktion som du vill köra.

Följande överväganden gäller när du gör begäranden till administratörsslutpunkter i funktionsappen:

  • När du gör begäranden till en slutpunkt under /admin/ sökvägen måste du ange appens huvudnyckel i x-functions-key rubriken för begäran.
  • När du kör lokalt tillämpas inte auktorisering och funktionens huvudnyckel krävs inte. Du kan anropa funktionen direkt genom att utesluta x-functions-key-rubriken.
  • När du kommer åt funktionsappens slutpunkter i ett distributionsfack ska du använda det platsspecifika värdnamnet i begärande-URL:en, tillsammans med den platsspecifika huvudnyckeln.

Hämta huvudnyckeln

Du kan hämta huvudnyckeln från antingen Azure-portalen eller med hjälp av Azure CLI.

Varning

På grund av de utökade behörigheterna i din funktionsapp som beviljats av huvudnyckeln bör du inte dela den här nyckeln med tredje part eller distribuera den i ett program. Nyckeln ska bara skickas till en HTTPS-slutpunkt.

  1. Gå till funktionsappen i Azure-portalen, välj Appnycklar och sedan _master nyckeln.

    Locate the master key to copy.

  2. I avsnittet Redigera nyckel kopierar du nyckelvärdet till Urklipp och väljer sedan OK.

    Copy the master key to the clipboard.

Anropa funktionen

  1. I Azure-portalen navigerar du högst upp i funktionsappen och väljer din funktion.

  2. Välj Kod + Test och välj sedan Loggar. Du ser meddelanden från funktionen som loggas här när du kör funktionen manuellt från Postman.

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

  3. Öppna Postman (eller ett motsvarande HTTP-skrivverktyg) och ange platsen för begäran i textrutan URL.

  4. Kontrollera att HTTP-metoden är inställd på POST, välj fliken Rubriker och lägg till dessa två nyckel/värde-par i huvudet:

    Tangent Värde
    x-functions-key Huvudnyckelvärdet som klistras in från Urklipp.
    Content-Type application/json

    Postman headers settings.

  5. Välj fliken Brödtext och skriv { "input": "<TRIGGER_INPUT>" } som brödtext för begäran.

    Postman body settings.

    Det specifika <TRIGGER_INPUT> du anger beror på typen av utlösare, men det kan bara vara ett sträng-, numeriskt eller booleskt värde. För tjänster som använder JSON-nyttolaster, till exempel Azure Service Bus, ska JSON-testnyttolasten vara undantagen och serialiseras som en sträng.

    Om du inte vill skicka indata till funktionen måste du fortfarande ange en tom ordlista {} som brödtext för POST-begäran. Mer information finns i referensartikeln för den specifika icke-HTTP-utlösaren.

  6. Välj Skicka.

    Send a request with Postman.

    Postman rapporterar statusen 202 - Godkänd.

  7. Gå därefter tillbaka till din funktion på Azure-portalen. Granska loggarna och du ser meddelanden som kommer från det manuella anropet till funktionen.

    View the logs to see the master key test results.

Hur du kommer åt data som skickas till utlösaren beror på typen av utlösare och ditt funktionsspråk. Mer information finns i referensexemplen för din specifika utlösare.

Nästa steg