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 |