AzureFunction@1 – Vyvolání úlohy Funkce Azure v1
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í musí být vytvořená a hostovaná v 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.
Vstupy
function
- Adresa URL funkce Azure
string
. Povinná hodnota.
Adresa URL funkce Azure, která se má vyvolat. Příklad: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1
.
key
- Funkční klávesa
string
. Povinná hodnota.
Funkce nebo klíč hostitele použitý pro přístup k funkci a vyvolání funkce Pokud chcete klíč zabezpečit, použijte k uložení klíče funkce proměnnou tajného kanálu. Příklad: $(myFunctionKey)
. myFunctionKey
je proměnná tajného klíče na úrovni prostředí s hodnotou jako tajný klíč.
method
- Metoda
string
. Povinná hodnota. Povolené hodnoty: OPTIONS
, GET
, HEAD
, POST
PUT
, , DELETE
, , TRACE
. PATCH
Výchozí hodnota: POST
.
Metoda HTTP, pomocí které 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 na ?
nebo &
.
body
- Tělo
string
. Nepovinný parametr. Použijte, když method != GET && method != HEAD
.
Text požadavku ve formátu JSON
waitForCompletion
- Událost dokončení
string
. Povinná hodnota. 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 vyhodnotí se jako pravdivá.true
- Zpětné volání – funkce provede zpětné volání pro aktualizaci záznamu časové osy.
successCriteria
- Kritéria úspěchu
string
. Nepovinný parametr. Použijte, když waitForCompletion = false
.
Kritéria úspěšného úkolu Ve výchozím nastavení úkol vrátí 200 OK
v případě úspěchu stav.
Příklad: Pro odpověď {"status" : "successful"}
může být eq(root['status'], 'successful')
výrazem . Přečtěte si další informace o zadávání podmínek.
Možnosti ovládání úloh
Všechny úlohy mají kromě vstupů také možnosti ovládání. Další informace najdete v tématu Možnosti ovládacího prvku a běžné vlastnosti úlohy.
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á v Azure Functions, a parsujte odpověď.
Kde má úkol signalizovat dokončení, když je jako událost dokončení zvoleno zpětné volání ?
Aby funkce signalizovala dokončení, měla by 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" }
Podrobnosti najdete v této jednoduché aplikaci cmdline . Kromě toho je k dispozici pomocná knihovna jazyka C#, která umožňuje živé protokolování a správu stavu úloh pro úlohy bez agentů. Další informace
Proč úkol selže během 1 minuty, když je časový limit delší?
Pokud se funkce spouští déle než 1 minutu, použijte událost dokončení zpětného volání . Možnost dokončení odpovědi rozhraní API se podporuje pro požadavky, které se dokončí během 60 sekund.
Příklady
Příklad funkce Azure, která používá režim dokončení 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, classic build, verze Classic |
Spustí se | Server, ServerGate |
Požadavky | Žádné |
Možnosti | Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze. |
Omezení příkazů | Všechny |
Nastavitelné proměnné | Všechny |
Verze agenta | Všechny podporované verze agenta. |
Kategorie úloh | Nástroj |