AzureFunction@1 – Azure Function v1-feladat meghívása
Ezt a feladatot egy kiadási folyamat ügynök nélküli feladatában használva meghívhat egy HTTP által aktivált függvényt egy függvényalkalmazásban, és elemezze a választ. A függvényalkalmazást Azure Functions kell létrehozni és üzemeltetni.
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.
Bevitelek
function
- Azure-függvény URL-címe
string
. Kötelező.
A meghívandó Azure-függvény URL-címe. Példa: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1
.
key
- Függvénykulcs
string
. Kötelező.
A függvény eléréséhez és meghívásához használt függvény vagy gazdagépkulcs. A kulcs biztonságának megőrzéséhez használjon titkos folyamat változót a függvénykulcs tárolásához. Példa: $(myFunctionKey)
. myFunctionKey
egy környezeti szintű titkos változó, amelynek értéke titkos kulcs.
method
- Módszer
string
. Kötelező. Engedélyezett értékek: OPTIONS
, GET
, HEAD
, POST
, PUT
, DELETE
, TRACE
. PATCH
Alapértelmezett érték: POST
.
A HTTP-metódus, amellyel a függvényt meghívja.
headers
- Fejlécek
string
. Alapértelmezett érték: {\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}
.
A függvénynek küldött kérelemhez csatolandó JSON formátumú fejléc.
queryParameters
- Lekérdezési paraméterek
string
.
A függvény URL-címéhez hozzáfűzendő karakterlánc-lekérdezés. Nem kezdődhet a vagy &
a rel?
.
body
- Szervezet
string
. Választható. Használja a következőt: method != GET && method != HEAD
.
A kérelem törzse JSON formátumban.
waitForCompletion
- Befejezési esemény
string
. Kötelező. Engedélyezett értékek: true
(Visszahívás), false
(ApiResponse). Alapértelmezett érték: false
.
Hogyan jelenti a feladat a befejezést.
false
- API-válasz – a függvény sikert ad vissza, a sikerességi feltételek pedig true (igaz) értéket ad vissza.true
- Visszahívás – a függvény visszahívást készít az ütemtervrekord frissítéséhez.
successCriteria
- Sikerességi feltételek
string
. Választható. Használja a következőt: waitForCompletion = false
.
A sikeres feladat feltételei. Alapértelmezés szerint a tevékenység sikeres állapotot ad 200 OK
vissza.
Példa: Válasz esetén {"status" : "successful"}
a kifejezés lehet eq(root['status'], 'successful')
. További információ a feltételek megadásáról.
Feladatvezérlési lehetőségek
Minden feladathoz tartoznak vezérlési lehetőségek is a feladat bemenetei mellett. További információ: Vezérlési beállítások és gyakori feladattulajdonságok.
Kimeneti változók
Nincsenek.
Megjegyzések
Ezt a feladatot egy kiadási folyamat ügynök nélküli feladatában használva meghívhat egy HTTP által aktivált függvényt egy függvényalkalmazásban, amely a Azure Functions-ban lett létrehozva és üzemeltetve, és elemzi a választ.
Hol kell a feladat befejezését jelezni, amikor a visszahívást választják befejezési eseményként?
A jelkiegészítéshez a függvénynek POST befejezési adatokat kell tartalmaznia a következő folyamatok REST-végpontjára.
{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" }
A részletekért tekintse meg ezt az egyszerű parancsmag-alkalmazást . Emellett elérhető egy C#-segédkódtár, amely lehetővé teszi az ügynök nélküli feladatok élő naplózását és feladatállapotának kezelését. További információ
Miért hiúsul meg a feladat 1 percen belül, amikor az időtúllépés hosszabb?
Ha a függvény több mint 1 percig fut, használja a Visszahívás befejező eseményt. Az API-válaszkiegészítési lehetőség 60 másodpercen belül befejeződő kérelmek esetén támogatott.
Példák
Példa a visszahívás-befejezési módot használó Azure-függvényre
#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);
}
}
Követelmények
Követelmény | Leírás |
---|---|
Folyamattípusok | YAML, klasszikus build, klasszikus kiadás |
Futtatás: | Kiszolgáló, ServerGate |
Igények | None |
Képességek | Ez a tevékenység nem felel meg a feladat későbbi tevékenységeire vonatkozó követelményeknek. |
Parancskorlátozások | Bármelyik |
Változók beállítása | Bármelyik |
Ügynök verziója | Minden támogatott ügynökverzió. |
Feladatkategória | Segédprogram |
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: