Bagikan melalui


AzureFunction@1 - Memanggil tugas Azure Function v1

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

Sintaks

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

Input

function - URL fungsi Azure
string. Wajib diisi.

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


key - Kunci fungsi
string. Wajib diisi.

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


method - Metode
string. Wajib diisi. Nilai yang diizinkan: OPTIONS, , HEADGET, POST, PUT, DELETE, TRACE, PATCH. Nilai default: POST.

Metode HTTP tempat fungsi akan dipanggil.


headers - Header
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.


queryParameters - Parameter kueri
string.

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


body - Tubuh
string. Pilihan. Gunakan saat method != GET && method != HEAD.

Isi permintaan dalam format JSON.


waitForCompletion - Peristiwa penyelesaian
string. Wajib diisi. Nilai yang diizinkan: true (Callback), false (ApiResponse). Nilai default: false.

Bagaimana tugas melaporkan penyelesaian.

  • false - Respons API - fungsi mengembalikan kriteria keberhasilan dan keberhasilan dievaluasi ke true.
  • true - Panggilan balik - fungsi membuat panggilan balik untuk memperbarui rekaman garis waktu.

successCriteria - Kriteria keberhasilan
string. Pilihan. Gunakan saat waitForCompletion = false.

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

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


Opsi kontrol tugas

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

Variabel output

Tidak ada.

Keterangan

Gunakan tugas ini dalam pekerjaan tanpa agen dari alur rilis untuk memanggil fungsi yang dipicu HTTP dalam aplikasi fungsi yang dibuat dan dihosting di Azure Functions dan mengurai 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 untuk detailnya. 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 Panggilan Balik . 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 ada
Kemampuan Tugas ini tidak memenuhi tuntutan untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Apa pun
Variabel yang dapat diatur Apa pun
Versi agen Semua versi agen yang didukung.
Kategori tugas Utilitas

Lihat juga