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.
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.
Förutsättningar
Exemplen i den här artikeln använder ett HTTP-testverktyg. Se till att välja ett verktyg som skyddar dina data. Mer information finns i HTTP-testverktyg.
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 HTTP-testverktyget.
I HTTP-testverktyget använder du den begärandeplats som du definierade som url för begäran, kontrollerar att HTTP-begärandemetoden är POST och inkluderar dessa två begärandehuvuden:
Tangent Värde x-functions-key
Huvudnyckelvärdet som klistras in från Urklipp. Content-Type
application/json
Kontrollera att POST-begärandenyttolasten/brödtexten är
{ "input": "<TRIGGER_INPUT>" }
. 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.Skicka HTTP POST-begäran. Svaret ska vara ett HTTP 202-svar (godkänt).
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.