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.
- 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 varamyfunctiondemos-staging.azurewebsites.net
för ett fack med namnetstaging
. - 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 ix-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.
Gå till funktionsappen i Azure-portalen, välj Appnycklar och sedan
_master
nyckeln.I avsnittet Redigera nyckel kopierar du nyckelvärdet till Urklipp och väljer sedan OK.
Anropa funktionen
I Azure-portalen navigerar du högst upp i funktionsappen och väljer din funktion.
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.
Öppna Postman (eller ett motsvarande HTTP-skrivverktyg) och ange platsen för begäran i textrutan URL.
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
Välj fliken Brödtext och skriv
{ "input": "<TRIGGER_INPUT>" }
som brödtext för begäran.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.Välj Skicka.
Postman rapporterar statusen 202 - Godkänd.
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.
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.