AzureFunction@1 - Azure İşlevi v1 görevini çağırma

Bu görevi, bir işlev uygulamasında HTTP ile tetiklenen bir işlevi çağırmak ve yanıtı ayrıştırmak için yayın işlem hattının aracısız bir işinde kullanın. İşlev uygulamasının Azure İşlevleri oluşturulması ve barındırılması gerekir.

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.

Girişler

function - Azure işlev URL'si
string. Gereklidir.

Çağrılacak Azure işlevinin URL'si. Örnek: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1.


key - İşlev tuşu
string. Gereklidir.

İşleve erişmek ve işlevi çağırmak için kullanılan işlev veya konak anahtarı. Anahtarın güvenliğini sağlamak için işlev anahtarını depolamak için bir gizli işlem hattı değişkeni kullanın. Örnek: $(myFunctionKey). myFunctionKey , gizli anahtar olarak değer içeren ortam düzeyinde bir gizli dizi değişkenidir.


method - Yöntem
string. Gereklidir. İzin verilen değerler: OPTIONS, GET, HEAD, POST, , PUT, DELETE, TRACE, PATCH. Varsayılan değer: POST.

İşlevin çağrılacağı HTTP yöntemi.


headers - Üstbilgi
string. Varsayılan değer: {\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}.

İşleve gönderilen isteğe eklenecek JSON biçiminde üst bilgi.


queryParameters - Sorgu parametreleri
string.

İşlev URL'sine eklenecek dize sorgusu. veya &ile ? başlamamalıdır.


body - Vücut
string. İsteğe bağlı. olduğunda method != GET && method != HEADkullanın.

JSON biçiminde istek gövdesi.


waitForCompletion - Tamamlanma olayı
string. Gereklidir. İzin verilen değerler: true (Geri Çağırma), false (ApiResponse). Varsayılan değer: false.

Görevin tamamlanma durumunu bildirme şekli.

  • false - API yanıtı - işlev başarıyı döndürür ve başarı ölçütleri doğru olarak değerlendirilir.
  • true - Geri arama - işlevi zaman çizelgesi kaydını güncelleştirmek için bir geri arama yapar.

successCriteria - Başarı ölçütleri
string. İsteğe bağlı. olduğunda waitForCompletion = falsekullanın.

Başarılı bir görevin ölçütleri. Varsayılan olarak, görev başarılı olduğunda durumu döndürür 200 OK .

Örnek: Yanıt {"status" : "successful"}için ifadesi olabilir eq(root['status'], 'successful'). Koşulları belirtme hakkında daha fazla bilgi edinin.


Görev denetim seçenekleri

Tüm görevlerde görev girişlerine ek olarak denetim seçenekleri vardır. Daha fazla bilgi için bkz . Denetim seçenekleri ve ortak görev özellikleri.

Çıkış değişkenleri

Yok.

Açıklamalar

Azure İşlevleri oluşturulan ve barındırılan bir işlev uygulamasında HTTP ile tetiklenen bir işlevi çağırmak ve yanıtı ayrıştırmak için bu görevi bir yayın işlem hattının aracısız işinde kullanın.

Geri Arama tamamlanma olayı olarak seçildiğinde görev sinyalinin nerede tamamlanması gerekir?

İşlemin tamamlanmasının sinyalini vermek için işlevin tamamlama verilerini aşağıdaki işlem hatları REST uç noktasına göndermesi gerekir.

{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" }

Ayrıntılar için bu basit cmdline uygulamasına bakın. Ayrıca, aracısız görevler için canlı günlüğe kaydetmeyi ve görev durumunu yönetmeyi etkinleştirmek için bir C# yardımcı kitaplığı sağlanır. Daha fazla bilgi edinin

Zaman aşımı daha uzun olduğunda görev neden 1 dakika içinde başarısız oluyor?

İşlev 1 dakikadan uzun süre yürütülürse Geri çağırma tamamlama olayını kullanın. API Yanıtı tamamlama seçeneği, 60 saniye içinde tamamlanan istekler için desteklenir.

Örnekler

Geri çağırma tamamlama modunu kullanan bir Azure İşlevi örneği

#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);
    }
}

Gereksinimler

Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalıştırılır Server, ServerGate
Talep Hiçbiri
Özellikler Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi biri
Ayarlanabilir değişkenler Herhangi biri
Aracı sürümü Desteklenen tüm aracı sürümleri.
Görev kategorisi Yardımcı Program

Ayrıca bkz.