Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tuto úlohu použijte v úloze bez agenta kanálu verze k vyvolání funkce aktivované protokolem HTTP v aplikaci funkcí a parsování odpovědi. Aplikace funkcí se musí vytvořit a hostovat ve službě Azure Functions.
Syntaxe
# 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.
Vstupy
function
-
adresy URL funkce Azure Functions
string. Povinné.
Adresa URL funkce Azure, která se má vyvolat. Příklad: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1.
key
-
funkční klávesy
string. Povinné.
Funkce nebo klíč hostitele sloužící k přístupu a vyvolání funkce. Pokud chcete klíč zabezpečit, uložte klíč funkce pomocí proměnné tajného kanálu. Příklad: $(myFunctionKey).
myFunctionKey je proměnná tajného kódu na úrovni prostředí s hodnotou jako tajný klíč.
method
-
– metoda
string. Povinné. Povolené hodnoty: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, PATCH. Výchozí hodnota: POST.
Metoda HTTP, se kterou bude funkce vyvolána.
headers
-
záhlaví
string. Výchozí hodnota: {\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}.
Hlavička ve formátu JSON, která se má připojit k požadavku odeslanému do funkce.
queryParameters
-
parametry dotazu
string.
Řetězcový dotaz, který se má připojit k adrese URL funkce. Nesmí začínat ? nebo &.
textu body -
string. Volitelný. Používá se při method != GET && method != HEAD.
Text požadavku ve formátu JSON.
události dokončení waitForCompletion -
string. Povinné. Povolené hodnoty: true (zpětné volání), false (ApiResponse). Výchozí hodnota: false.
Jak úkol hlásí dokončení.
-
false– odpověď rozhraní API – funkce vrátí kritéria úspěchu a úspěchu, která se vyhodnotí jako true. -
true– zpětné volání – funkce provede zpětné volání pro aktualizaci záznamu časové osy.
kritéria úspěchu successCriteria -
string. Volitelný. Používá se při waitForCompletion = false.
Kritéria pro úspěšný úkol. Úkol ve výchozím nastavení vrátí 200 OK stav po úspěšném dokončení.
Příklad: Pro odpověď {"status" : "successful"}může být výraz eq(root['status'], 'successful'). Přečtěte si další informace o určení podmínek.
Možnosti ovládání úloh
Všechny úlohy mají kromě vstupů také možnosti ovládání. Další informace naleznete v tématu Možnosti ovládacího prvku a běžné vlastnosti úloh.
Výstupní proměnné
Žádné.
Poznámky
Tuto úlohu použijte v úloze bez agenta kanálu verze k vyvolání funkce aktivované protokolem HTTP v aplikaci funkcí, která je vytvořená a hostovaná ve službě Azure Functions, a parsovat odpověď.
Kde má být dokončení signálu úkolu při zpětné volání vybrána jako událost dokončení?
Aby funkce signalizovala dokončení, měla by být data dokončení POST do následujícího koncového bodu REST kanálů.
{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" }
Konkrétní informace najdete v této jednoduché aplikace cmdline. Kromě toho je k dispozici pomocná knihovna jazyka C#, která umožňuje protokolování za provozu a správu stavu úloh pro úlohy bez agentů. Další informace
Proč úloha selže během 1 minuty, když je časový limit delší?
Pokud se funkce spustí déle než 1 minutu, použijte událost zpětného volání dokončení. Možnost dokončení odpovědi rozhraní API je podporovaná pro požadavky, které se dokončí do 60 sekund.
Příklady
Příklad funkce Azure, která používá režim dokončování zpětného volání
#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);
}
}
Požadavky
| Požadavek | Popis |
|---|---|
| Typy kanálů | YAML, klasické sestavení, klasická verze |
| Běží na | Server, ServerGate |
| požadavky | Žádný |
| možnosti | Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze. |
| omezení příkazů | Jakýkoliv |
| nastavitelné proměnné | Jakýkoliv |
| Verze agenta | Všechny podporované verze agenta. |
| Kategorie úkolu | Užitnost |