AzureFunction@1: tarea Invocar la función de Azure v1
Use esta tarea en un trabajo sin agente de una canalización de versión para invocar una función desencadenada por HTTP en una aplicación de funciones y analizar la respuesta. La aplicación de funciones debe crearse y hospedarse en Azure Functions.
Sintaxis
# 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.
Entradas
function
-
dirección URL de la función de Azure
string
. Obligatorio.
Dirección URL de la función de Azure que se va a invocar. Ejemplo: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1
.
clave de función de key
-
string
. Obligatorio.
Función o clave de host usada para acceder a la función e invocarla. Para proteger la clave, use una variable de canalización secreta para almacenar la clave de función. Ejemplo: $(myFunctionKey)
.
myFunctionKey
es una variable secreta de nivel de entorno con un valor como clave secreta.
del método method
-
string
. Obligatorio. Valores permitidos: OPTIONS
, GET
, HEAD
, POST
, PUT
, DELETE
, TRACE
, PATCH
. Valor predeterminado: POST
.
Método HTTP con el que se invocará la función.
headers
-
encabezados
string
. Valor predeterminado: {\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}
.
Encabezado en formato JSON que se va a adjuntar a la solicitud enviada a la función.
queryParameters
-
Parámetros de consulta
string
.
Consulta de cadena que se va a anexar a la dirección URL de la función. No debe comenzar con ?
ni &
.
cuerpo de body
-
string
. Opcional. Use cuando method != GET && method != HEAD
.
Cuerpo de la solicitud en formato JSON.
de eventos de finalización de waitForCompletion
-
string
. Obligatorio. Valores permitidos: true
(devolución de llamada), false
(ApiResponse). Valor predeterminado: false
.
Cómo notifica la finalización de la tarea.
-
false
: de respuesta de API: la función devuelve criterios correctos y correctos se evalúa como true. -
true
: devolución de llamada: la función realiza una devolución de llamada para actualizar el registro de escala de tiempo.
successCriteria
-
criterios de éxito
string
. Opcional. Use cuando waitForCompletion = false
.
Criterios para una tarea correcta. De forma predeterminada, la tarea devuelve 200 OK
estado cuando se ejecuta correctamente.
Ejemplo: para la {"status" : "successful"}
de respuesta, la expresión puede ser eq(root['status'], 'successful')
. Obtenga más información sobre especificar condiciones.
Opciones de control de tareas
Todas las tareas tienen opciones de control además de sus entradas de tarea. Para obtener más información, consulte Opciones de control y propiedades de tareas comunes.
Variables de salida
Ninguno.
Observaciones
Use esta tarea en un trabajo sin agente de una canalización de versión para invocar una función desencadenada por HTTP en una aplicación de funciones que se crea y hospeda en Azure Functions y analiza la respuesta.
¿Dónde debe elegirse la finalización de una señal de tarea al devolución de llamada como evento de finalización?
Para indicar la finalización, la función debe publicar los datos de finalización en el siguiente punto de conexión REST de canalizaciones.
{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" }
Consulte esta sencilla de aplicación cmdline para obtener información específica. Además, hay disponible una biblioteca auxiliar de C# para habilitar el registro en directo y administrar el estado de la tarea para las tareas sin agente. Más información
¿Por qué se produce un error en la tarea en un minuto cuando el tiempo de espera es mayor?
Si la función se ejecuta durante más de 1 minuto, use el evento de devolución de llamada de devolución de llamada. La opción de finalización de respuesta de API se admite para las solicitudes que se completan en un plazo de 60 segundos.
Ejemplos
Ejemplo de una función de Azure que usa el modo de finalización de devolución de llamada
#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);
}
}
Requisitos
Requisito | Descripción |
---|---|
Tipos de canalización | YAML, compilación clásica, versión clásica |
Se ejecuta en | Server, ServerGate |
demandas | Ninguno |
funcionalidades de |
Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo. |
restricciones de comandos | Cualquiera |
variables settable | Cualquiera |
Versión del agente | Todas las versiones de agente admitidas. |
Categoría de tarea | Utilidad |