Dela via


AzureFunction@1 – Anropa Azure Function v1-uppgift

Använd den här uppgiften i ett agentlöst jobb i en versionspipeline för att anropa en HTTP-utlöst funktion i en funktionsapp och parsa svaret. Funktionsappen måste skapas och finnas i Azure Functions.

Syntax

# Invoke Azure Function v1
# Invoke an Azure Function.
- task: AzureFunction@1
  inputs:
    function: # string. Required. Azure function URL. 
    key: # string. Required. Function key. 
    method: 'POST' # 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'PATCH'. Required. Method. Default: POST.
    #headers: # string. Headers. 
    #queryParameters: # string. Query parameters. 
    #body: # string. Optional. Use when method != GET && method != HEAD. Body. 
  # Advanced
    waitForCompletion: 'false' # 'true' | 'false'. Required. Completion event. Default: false.
    #successCriteria: # string. Optional. Use when waitForCompletion = false. Success criteria.
# Invoke Azure Function v1
# Invoke an Azure Function as a part of your pipeline.
- task: AzureFunction@1
  inputs:
    function: # string. Required. Azure function URL. 
    key: # string. Required. Function key. 
    method: 'POST' # 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'PATCH'. Required. Method. Default: POST.
    #headers: # string. Headers. 
    #queryParameters: # string. Query parameters. 
    #body: # string. Optional. Use when method != GET && method != HEAD. Body. 
  # Advanced
    waitForCompletion: 'false' # 'true' | 'false'. Required. Completion event. Default: false.
    #successCriteria: # string. Optional. Use when waitForCompletion = false. Success criteria.

Indata

function - Url för Azure-funktion
string. Krävs.

URL:en för den Azure-funktion som ska anropas. Exempel: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1.


key - Funktionsnyckel
string. Krävs.

Funktionen eller värdnyckeln som används för att komma åt och anropa funktionen. Om du vill skydda nyckeln använder du en hemlig pipelinevariabel för att lagra funktionsnyckeln. Exempel: $(myFunctionKey). myFunctionKey är en hemlig variabel på miljönivå med ett värde som hemlig nyckel.


method - Metod
string. Krävs. Tillåtna värden: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE. PATCH Standardvärde: POST.

DEN HTTP-metod som funktionen ska anropas med.


headers - Headers
string. Standardvärde: {\n"Content-Type":"application/json", \n"PlanUrl": "$(system.CollectionUri)", \n"ProjectId": "$(system.TeamProjectId)", \n"HubName": "$(system.HostType)", \n"PlanId": "$(system.PlanId)", \n"JobId": "$(system.JobId)", \n"TimelineId": "$(system.TimelineId)", \n"TaskInstanceId": "$(system.TaskInstanceId)", \n"AuthToken": "$(system.AccessToken)"\n}.

Huvudet i JSON-format som ska kopplas till begäran som skickas till funktionen.


queryParameters - Frågeparametrar
string.

Strängfrågan som ska läggas till i funktions-URL:en. Får inte börja med ? eller &.


body - Kroppen
string. Valfritt. Använd när method != GET && method != HEAD.

Begärandetexten i JSON-format.


waitForCompletion - Slutförandehändelse
string. Krävs. Tillåtna värden: true (Återanrop), false (ApiResponse). Standardvärde: false.

Hur uppgiften rapporterar slutförande.

  • false – API-svar – funktionen returnerar framgångs- och framgångskriterier utvärderas till sant.
  • true – Återanrop – funktionen gör ett återanrop för att uppdatera tidslinjeposten.

successCriteria - Framgångskriterier
string. Valfritt. Använd när waitForCompletion = false.

Kriterierna för en lyckad uppgift. Som standard returnerar 200 OK aktiviteten status när den lyckas.

Exempel: För svar {"status" : "successful"}kan uttrycket vara eq(root['status'], 'successful'). Läs mer om att ange villkor.


Kontrollalternativ för aktivitet

Alla aktiviteter har kontrollalternativ utöver sina aktivitetsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.

Utdatavariabler

Inga.

Kommentarer

Använd den här uppgiften i ett agentlöst jobb i en versionspipeline för att anropa en HTTP-utlöst funktion i en funktionsapp som skapas och hanteras i Azure Functions och parsa svaret.

Var ska en aktivitetssignal slutföras när återanrop väljs som slutförandehändelse?

För att signalera slutförande ska funktionen POST-slutförandedata till följande REST-slutpunkt för pipelines.

{planUri}/{projectId}/_apis/distributedtask/hubs/{hubName}/plans/{planId}/events?api-version=2.0-preview.1

**Request Body**
{ "name": "TaskCompleted", "taskId": "taskInstanceId", "jobId": "jobId", "result": "succeeded" }

Mer information finns i det här enkla cmdline-programmet . Dessutom finns ett C#-hjälpbibliotek tillgängligt för aktiv loggning och hantering av aktivitetsstatus för agentlösa uppgifter. Läs mer

Varför misslyckas aktiviteten inom en minut när tidsgränsen är längre?

Om funktionen körs i mer än 1 minut använder du slutförandehändelsen för återanrop . Slutförandealternativet API-svar stöds för begäranden som slutförs inom 60 sekunder.

Exempel

Exempel på en Azure-funktion som använder återanropsslutläget

#r "Newtonsoft.Json"

using System;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    var url = req.Headers["PlanUrl"];
    var projectId = req.Headers["ProjectId"];
    var hubName = req.Headers["HubName"];
    var planId = req.Headers["PlanId"];
    var jobId = req.Headers["JobId"];
    var timelineId = req.Headers["TimelineId"];
    var taskInstanceId = req.Headers["TaskinstanceId"];
    var authToken = req.Headers["AuthToken"];

    var callbackUrl = $"{url}/{projectId}/_apis/distributedtask/hubs/{hubName}/plans/{planId}/events?api-version=2.0-preview.1";
  
    var successBody = JsonConvert.SerializeObject(new {
        name = "TaskCompleted",
        taskId = taskInstanceId.ToString(),
        jobId = jobId.ToString(),
        result = "succeeded"
    });

    // the following call does not block
    Task.Run(() =>
    {
        Thread.Sleep(70000); // simulate long running work
        PostEvent(callbackUrl, successBody, authToken, log);
    });
   
    return new OkObjectResult("Long-running job successfully scheduled!");
}
    
public static void PostEvent(String callbackUrl, String body, String authToken, ILogger log)
{
    try
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authToken);
        var requestContent = new StringContent(body, Encoding.UTF8, "application/json");
        var response = client.PostAsync(new Uri(callbackUrl), requestContent).Result;
        var responseContent = response.Content.ReadAsStringAsync().Result;
        log.LogInformation(response.StatusCode.ToString());
        log.LogInformation(responseContent);
    }
    catch (Exception ex)
    {
        log.LogError(ex.Message);
    }
}

Krav

Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Server, ServerGate
Krav Ingen
Funktioner Den här aktiviteten uppfyller inte några krav för efterföljande uppgifter i jobbet.
Kommandobegränsningar Valfri
Inställningsbara variabler Valfri
Agentversion Alla agentversioner som stöds.
Uppgiftskategori Verktyg

Se även