AzureFunction@1 – Invocar tarefa do Azure Function v1
Use essa tarefa em um trabalho sem agente de um pipeline de lançamento para invocar uma função disparada por HTTP em um aplicativo de funções e analisar a resposta. O aplicativo de funções deve ser criado e hospedado no Azure Functions.
Sintaxe
# 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
-
url de função do Azure
string
. Obrigatório
A URL da função do Azure a ser invocada. Exemplo: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1
.
de chave de função key
-
string
. Obrigatório
A função ou a chave de host usada para acessar e invocar a função. Para manter a chave segura, use uma variável de pipeline secreta para armazenar a chave de função. Exemplo: $(myFunctionKey)
.
myFunctionKey
é uma variável secreta no nível do ambiente com um valor como a chave secreta.
Método method
-
string
. Obrigatório Valores permitidos: OPTIONS
, GET
, HEAD
, POST
, PUT
, DELETE
, TRACE
, PATCH
. Valor padrão: POST
.
O método HTTP com o qual a função será invocada.
Cabeçalhos headers
-
string
. Valor padrão: {\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}
.
O cabeçalho no formato JSON a ser anexado à solicitação enviada à função.
parâmetros de consulta queryParameters
-
string
.
A consulta de cadeia de caracteres a ser acrescentada à URL da função. Não deve começar com ?
ou &
.
body
-
corpo
string
. Opcional. Use quando method != GET && method != HEAD
.
O corpo da solicitação no formato JSON.
de evento de conclusão de waitForCompletion
-
string
. Obrigatório Valores permitidos: true
(retorno de chamada), false
(ApiResponse). Valor padrão: false
.
Como a tarefa relata a conclusão.
-
false
- de resposta à API - a função retorna critérios de êxito e êxito avaliados como verdadeiros. -
true
- de retorno de chamada - a função faz um retorno de chamada para atualizar o registro da linha do tempo.
critérios de sucesso successCriteria
-
string
. Opcional. Use quando waitForCompletion = false
.
Os critérios para uma tarefa bem-sucedida. Por padrão, a tarefa retorna 200 OK
status quando bem-sucedida.
Exemplo: para {"status" : "successful"}
de resposta, a expressão pode ser eq(root['status'], 'successful')
. Saiba mais sobre especificando condições.
Opções de controle de tarefa
Todas as tarefas têm opções de controle além das suas entradas de tarefas. Para obter mais informações, consulte as opções de Controle de e as propriedades comuns da tarefa.
Variáveis de saída
Nenhum.
Observações
Use essa tarefa em um trabalho sem agente de um pipeline de lançamento para invocar uma função disparada por HTTP em um aplicativo de funções criado e hospedado no Azure Functions e analisar a resposta.
Onde um sinal de tarefa deve ser concluído quando de Retorno de Chamada é escolhido como o evento de conclusão?
Para sinalizar a conclusão, a função deve postar dados de conclusão para o ponto de extremidade REST de pipelines a seguir.
{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 este aplicativo cmdline simples para obter detalhes. Além disso, uma biblioteca auxiliar do C# está disponível para habilitar o registro em log dinâmico e o gerenciamento do status da tarefa para tarefas sem agente. Saiba mais
Por que a tarefa falha dentro de 1 minuto quando o tempo limite é maior?
Se a função for executada por mais de 1 minuto, use o retorno de chamada evento de conclusão. A opção de conclusão da Resposta à API tem suporte para solicitações que são concluídas dentro de 60 segundos.
Exemplos
Exemplo de uma Função do Azure que usa o modo de conclusão de retorno de chamada
#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 | Descrição |
---|---|
Tipos de pipeline | YAML, build clássico, versão clássica |
Execuções em | Server, ServerGate |
de demandas | Nenhum |
recursos | Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho. |
restrições de comando | Qualquer |
variáveis settable | Qualquer |
Versão do agente | Todas as versões de agente com suporte. |
Categoria de tarefa | Utilidade |