Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Använd den här uppgiften i ett agentlöst jobb av 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.
Ingångar
function
-
AZURE-funktions-URL
string. Obligatoriskt.
URL:en för den Azure-funktion som ska anropas. Exempel: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1.
key
-
Funktionsnyckel
string. Obligatoriskt.
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. Obligatoriskt. Tillåtna värden: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, PATCH. Standardvärde: POST.
DEN HTTP-metod som funktionen ska anropas med.
headers
-
rubriker
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
-
brödtext
string. Valfritt. Använd när method != GET && method != HEAD.
Begärandetexten i JSON-format.
waitForCompletion
-
slutförandehändelse
string. Obligatoriskt. Tillåtna värden: true (återanrop), false (ApiResponse). Standardvärde: false.
Så här rapporterar uppgiften 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 aktiviteten 200 OK 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
Ingen.
Anmärkningar
Använd den här uppgiften i ett agentlöst jobb av 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 att aktivera liveloggning och hantering av aktivitetsstatus för agentlösa uppgifter. Läs mer
Varför misslyckas aktiviteten inom 1 minut när tidsgränsen är längre?
Om funktionen körs i mer än 1 minut använder du händelsen Återanrop slutförande. 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 läget för slutförande av motringning
#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 |
| kräver | Ingen |
| funktioner | Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet. |
| Kommandobegränsningar | Vilken som helst |
| variabler som kan | Vilken som helst |
| Agentversion | Alla agentversioner som stöds. |
| Aktivitetskategori | Nytta |