AzureFunction@1 - Memanggil tugas Azure Function v1

Gunakan tugas ini dalam pekerjaan tanpa agen alur rilis untuk memanggil fungsi yang dipicu HTTP dalam aplikasi fungsi dan mengurai respons. Aplikasi fungsi harus dibuat dan dihosting di Azure Functions.

Sintaksis

# 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.

Masukan

URL fungsi Azure function -
string. Dibutuhkan.

URL fungsi Azure yang akan dipanggil. Contoh: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1.


kunci Fungsi key -
string. Dibutuhkan.

Fungsi atau kunci host yang digunakan untuk mengakses dan memanggil fungsi. Untuk menjaga keamanan kunci, gunakan variabel alur rahasia untuk menyimpan kunci fungsi. Contoh: $(myFunctionKey). myFunctionKey adalah variabel rahasia tingkat lingkungan dengan nilai sebagai kunci rahasia.


Metode method -
string. Dibutuhkan. Nilai yang diizinkan: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, PATCH. Nilai default: POST.

Metode HTTP tempat fungsi akan dipanggil.


Header headers -
string. Nilai default: {\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}.

Header dalam format JSON yang akan dilampirkan ke permintaan yang dikirim ke fungsi.


parameter kueri queryParameters -
string.

Kueri string untuk ditambahkan ke URL fungsi. Tidak boleh dimulai dengan ? atau &.


Isi body -
string. Fakultatif. Gunakan saat method != GET && method != HEAD.

Isi permintaan dalam format JSON.


peristiwa Penyelesaian waitForCompletion -
string. Dibutuhkan. Nilai yang diizinkan: true (Panggilan Balik), false (ApiResponse). Nilai default: false.

Bagaimana tugas melaporkan penyelesaian.

  • false - respons API - fungsi mengembalikan kriteria keberhasilan dan keberhasilan yang dievaluasi ke true.
  • true - Callback - fungsi melakukan panggilan balik untuk memperbarui catatan garis waktu.

kriteria Keberhasilan successCriteria -
string. Fakultatif. Gunakan saat waitForCompletion = false.

Kriteria untuk tugas yang berhasil. Secara default, tugas mengembalikan status 200 OK saat berhasil.

Contoh: Untuk respons {"status" : "successful"}, ekspresi dapat eq(root['status'], 'successful'). Pelajari selengkapnya tentang menentukan kondisi.


Opsi kontrol tugas

Semua tugas memiliki opsi kontrol selain input tugasnya. Untuk informasi selengkapnya, lihat opsi Kontrol dan properti tugas umum.

Variabel output

Tidak ada.

Komentar

AzureFunction@2 adalah versi yang lebih baru dari tugas Panggil Azure Fungsi.

Gunakan tugas ini dalam pekerjaan tanpa agen alur rilis untuk memanggil fungsi yang dipicu HTTP dalam aplikasi fungsi yang dibuat dan dihosting di Azure Functions dan uraikan respons.

Di mana sinyal tugas harus selesai saat Callback dipilih sebagai peristiwa penyelesaian?

Untuk penyelesaian sinyal, fungsi harus MEMPOSTING data penyelesaian ke titik akhir REST alur berikut.

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

Lihat aplikasi cmdline sederhana ini secara spesifik. Selain itu, pustaka pembantu C# tersedia untuk mengaktifkan pengelogan langsung dan mengelola status tugas untuk tugas tanpa agen. Pelajari lebih lanjut

Mengapa tugas gagal dalam waktu 1 menit ketika waktu habis lebih lama?

Jika fungsi dijalankan selama lebih dari 1 menit, gunakan peristiwa penyelesaian Callback. Opsi penyelesaian Respons API didukung untuk permintaan yang selesai dalam waktu 60 detik.

Contoh

Contoh Azure Function yang menggunakan mode penyelesaian panggilan balik

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

Persyaratan

Persyaratan Deskripsi
Jenis alur YAML, Build klasik, Rilis klasik
Berjalan pada Server, ServerGate
Permintaan Tidak
Kemampuan Tugas ini tidak memenuhi tuntutan apa pun untuk tugas berikutnya dalam pekerjaan.
pembatasan Perintah Apapun
variabel yang Dapat Diatur Apapun
Versi agen Semua versi agen yang didukung.
Kategori tugas Utilitas

Lihat juga