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.

Postman wordt in het volgende voorbeeld gebruikt, maar u kunt cURL, Fiddler of een ander hulpprogramma gebruiken om HTTP-aanvragen te verzenden.

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.

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.

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

  • 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 is myfunctiondemos-staging.azurewebsites.net de URL voor een site met de naam staging.
  • Mappad: Als u via een HTTP-aanvraag toegang wilt krijgen tot niet-door HTTP geactiveerde functies, moet u de aanvraag via het pad admin/functionsverzenden. 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 de x-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.

  1. Navigeer naar uw functie-app in Azure Portal, selecteer App-sleutels en vervolgens de _master sleutel.

    Locate the master key to copy.

  2. Kopieer in de sectie Sleutel bewerken de sleutelwaarde naar het Klembord en selecteer VERVOLGENS OK.

    Copy the master key to the clipboard.

Functie aanroepen

  1. Navigeer in Azure Portal naar de bovenkant van uw functie-app en kies uw functie.

  2. Selecteer Code + Testen en selecteer vervolgens Logboeken. U ziet berichten van de functie die hier is geregistreerd wanneer u de functie handmatig uitvoert vanuit Postman.

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

  3. Open Postman (of een equivalent hulpprogramma voor HTTP-componeren) en voer de aanvraaglocatie in het URL-tekstvak in.

  4. Zorg ervoor dat de HTTP-methode is ingesteld op POST, selecteer het tabblad Headers en voeg deze twee headersleutel-waardeparen toe:

    Sleutel Weergegeven als
    x-functions-key De waarde van de hoofdsleutel die vanaf het klembord is geplakt.
    Content-Type application/json

    Postman headers settings.

  5. Selecteer het tabblad Hoofdtekst en typ { "input": "<TRIGGER_INPUT>" } de hoofdtekst voor de aanvraag.

    Postman body settings.

    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.

  6. Selecteer Verzenden.

    Send a request with Postman.

    Postman rapporteert vervolgens de status 202 - Geaccepteerd.

  7. 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.

    View the logs to see the master key test results.

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.

Volgende stappen