Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usare questa attività in un processo senza agente di una pipeline di versione per richiamare una funzione attivata tramite HTTP in un'app per le funzioni e analizzare la risposta. L'app per le funzioni deve essere creata e ospitata in Funzioni di Azure.
Sintassi
# 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.
Ingressi dati
function
-
URL della funzione di Azure
string
. Obbligatorio.
URL della funzione di Azure da richiamare. Esempio: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1
.
key
-
tasto funzione
string
. Obbligatorio.
Funzione o chiave host usata per accedere e richiamare la funzione. Per proteggere la chiave, usare una variabile della pipeline privata per archiviare la chiave della funzione. Esempio: $(myFunctionKey)
.
myFunctionKey
è una variabile privata a livello di ambiente con un valore come chiave privata.
metodo method
-
string
. Obbligatorio. Valori consentiti: OPTIONS
, GET
, HEAD
, POST
, PUT
, DELETE
, TRACE
, PATCH
. Valore predefinito: POST
Metodo HTTP con cui verrà richiamata la funzione.
headers
-
intestazioni
string
. Valore predefinito: {\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}
Intestazione in formato JSON da collegare alla richiesta inviata alla funzione.
queryParameters
-
parametri di query
string
.
Query stringa da aggiungere all'URL della funzione. Non deve iniziare con ?
o &
.
body
-
corpo
string
. Opzionale. Usare quando method != GET && method != HEAD
.
Corpo della richiesta in formato JSON.
waitForCompletion
-
evento Completion
string
. Obbligatorio. Valori consentiti: true
(callback), false
(ApiResponse). Valore predefinito: false
Come l'attività segnala il completamento.
-
false
: di risposta API: la funzione restituisce i criteri di esito positivo e riuscito restituisce true. -
true
- Callback - la funzione esegue un callback per aggiornare il record della sequenza temporale.
successCriteria
-
criteri di esito positivo
string
. Opzionale. Usare quando waitForCompletion = false
.
Criteri per un'attività riuscita. Per impostazione predefinita, l'attività restituisce 200 OK
stato quando ha esito positivo.
Esempio: per la risposta {"status" : "successful"}
, l'espressione può essere eq(root['status'], 'successful')
. Altre informazioni su specifica delle condizioni.
Opzioni di controllo attività
Tutte le attività hanno opzioni di controllo oltre ai relativi input di attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.
Variabili di output
Nessuno.
Osservazioni:
Usare questa attività in un processo senza agente di una pipeline di versione per richiamare una funzione attivata tramite HTTP in un'app per le funzioni creata e ospitata in Funzioni di Azure e analizzare la risposta.
Dove deve essere completato un segnale di attività quando callback viene scelto come evento di completamento?
Per segnalare il completamento, la funzione deve inviare i dati di completamento POST all'endpoint REST delle pipeline seguente.
{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" }
Per informazioni specifiche, vedere questa semplice applicazione cmdline. Inoltre, è disponibile una libreria helper C# per abilitare la registrazione in tempo reale e gestire lo stato delle attività per le attività senza agente. Ulteriori informazioni
Perché l'attività ha esito negativo entro 1 minuto quando il timeout è più lungo?
Se la funzione viene eseguita per più di 1 minuto, usare l'evento di callback completamento. L'opzione Di completamento della risposta API è supportata per le richieste completate entro 60 secondi.
Esempi
Esempio di una funzione di Azure che usa la modalità di completamento del callback
#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);
}
}
Requisiti
Requisito | Descrizione |
---|---|
Tipi di pipeline | YAML, build classica, versione classica |
Viene eseguito in | Server, ServerGate |
richieste | Nessuno |
funzionalità di |
Questa attività non soddisfa alcuna richiesta di attività successive nel processo. |
restrizioni dei comandi | Qualunque |
variabili impostabili | Qualunque |
Versione dell'agente | Tutte le versioni dell'agente supportate. |
Categoria attività | Utilità |