Handmatig een niet door HTTP geactiveerde functie uitvoeren
In dit artikel wordt gedemonstreerd hoe u een niet door HTTP geactiveerde functie handmatig kunt uitvoeren via een speciaal opgemaakte HTTP-aanvraag.
In sommige contexten, zoals tijdens het ontwikkelen en oplossen van problemen, moet u mogelijk 'on-demand' een Azure-functie uitvoeren die indirect wordt geactiveerd. Voorbeelden van indirecte triggers zijn functies volgens een schema of functies die worden uitgevoerd als gevolg van gebeurtenissen.
De procedure die in dit artikel wordt beschreven, is gelijk aan het gebruik van de functionaliteit Testen/uitvoeren van het tabblad Code + Test van een functie in Azure Portal. U kunt Visual Studio Code ook gebruiken om functies handmatig uit te voeren.
Vereisten
In de voorbeelden in dit artikel wordt een HTTP-testhulpprogramma gebruikt. Zorg ervoor dat u een hulpprogramma kiest waarmee uw gegevens veilig blijven. Zie HTTP-testhulpprogramma's voor meer informatie.
Aanvraaglocatie definiëren
Als u een niet-door HTTP geactiveerde functie wilt uitvoeren, hebt u een manier nodig om een aanvraag naar Azure te verzenden om de functie uit te voeren. De URL om deze aanvraag te doen, heeft een specifieke vorm.
- Hostnaam: de openbare locatie van de functie-app die bestaat uit de naam van de functie-app plus azurewebsites.net of uw aangepaste domein. Wanneer u werkt met implementatiesites die worden gebruikt voor fasering, is het hostnaamgedeelte de naam van de productiehost die
-<slotname>
eraan is toegevoegd. In het vorige voorbeeld ismyfunctiondemos-staging.azurewebsites.net
de URL voor een site met de naamstaging
. - Mappad: Als u via een HTTP-aanvraag toegang wilt krijgen tot niet-door HTTP geactiveerde functies, moet u de aanvraag via het pad
admin/functions
verzenden. API's onder het/admin/
pad zijn alleen toegankelijk met autorisatie. - Functienaam: de naam van de functie die u wilt uitvoeren.
De volgende overwegingen zijn van toepassing bij het indienen van aanvragen voor beheerderseindpunten in uw functie-app:
- Wanneer u aanvragen indient naar een eindpunt onder het
/admin/
pad, moet u de hoofdsleutel van uw app opgeven in dex-functions-key
header van de aanvraag. - Wanneer u lokaal uitvoert, wordt autorisatie niet afgedwongen en is de hoofdsleutel van de functie niet vereist. U kunt de functie rechtstreeks aanroepen en de
x-functions-key
-header weglaten. - Wanneer u functie-app-eindpunten in een implementatiesite opent, moet u de hostnaam van de site in de aanvraag-URL gebruiken, samen met de sitespecifieke hoofdsleutel.
De hoofdsleutel ophalen
U kunt de hoofdsleutel ophalen vanuit Azure Portal of met behulp van de Azure CLI.
Let op
Vanwege verhoogde machtigingen in de functie-app die door de hoofdsleutel zijn verleend, dient u deze sleutel niet te delen met derden of in een toepassing te distribueren. De sleutel mag alleen naar een HTTPS-eindpunt worden verzonden.
Navigeer naar uw functie-app in Azure Portal, selecteer App-sleutels en vervolgens de
_master
sleutel.Kopieer in de sectie Sleutel bewerken de sleutelwaarde naar het Klembord en selecteer VERVOLGENS OK.
Functie aanroepen
Navigeer in Azure Portal naar de bovenkant van uw functie-app en kies uw functie.
Selecteer Code + Testen en selecteer vervolgens Logboeken. U ziet berichten van de functie die hier is geregistreerd wanneer u de functie handmatig uitvoert vanuit uw HTTP-testhulpprogramma.
Gebruik in het HTTP-testprogramma de aanvraaglocatie die u hebt gedefinieerd als de aanvraag-URL, zorg ervoor dat de HTTP-aanvraagmethode POST is en neem deze twee aanvraagheaders op:
Sleutel Weergegeven als x-functions-key
De waarde van de hoofdsleutel die vanaf het klembord is geplakt. Content-Type
application/json
Zorg ervoor dat de nettolading/hoofdtekst van de POST-aanvraag is
{ "input": "<TRIGGER_INPUT>" }
. De specifieke waarde<TRIGGER_INPUT>
die u opgeeft, is afhankelijk van het type trigger, maar kan alleen een tekenreeks, numeriek of booleaanse waarde zijn. Voor services die gebruikmaken van JSON-nettoladingen, zoals Azure Service Bus, moet de JSON-nettolading worden geserialiseerd en geserialiseerd als een tekenreeks.Als u geen invoergegevens aan de functie wilt doorgeven, moet u nog steeds een lege woordenlijst
{}
opgeven als hoofdtekst van de POST-aanvraag. Zie het naslagartikel voor de specifieke niet-HTTP-trigger voor meer informatie.Verzend de HTTP POST-aanvraag. Het antwoord moet een HTTP 202-antwoord (geaccepteerd) zijn.
Ga vervolgens terug naar uw functie in de Azure-portal. Bekijk de logboeken en u ziet berichten die afkomstig zijn van de handmatige aanroep naar de functie.
De manier waarop u toegang krijgt tot gegevens die naar de trigger worden verzonden, is afhankelijk van het type trigger en uw functietaal. Zie de referentievoorbeelden voor uw specifieke trigger voor meer informatie.