Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 iş kullanın. İşlev uygulamasının Azure İşlevleri'nde oluşturulması ve barındırılması gerekir.
Sözdizimi
# 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.
Girişler
Azure işlev URL'sinifunction -
string. Gerekli.
Çağrılacak Azure işlevinin URL'si. Örnek: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1.
key
-
İşlev anahtarı
string. Gerekli.
İş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 dizi 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öntemi
string. Gerekli. İzin verilen değerler: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, PATCH. Varsayılan değer: POST.
İşlevin çağrılacağı HTTP yöntemi.
üst bilgileriheaders -
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
-
Gövde
string. Opsiyonel.
method != GET && method != HEADolduğunda kullanın.
JSON biçiminde istek gövdesi.
waitForCompletion
-
Tamamlama olayı
string. Gerekli. İzin verilen değerler: true (Geri Arama), 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 çağırma - işlevi zaman çizelgesi kaydını güncelleştirmek için bir geri çağırma yapar.
successCriteria
-
Başarı ölçütleri
string. Opsiyonel.
waitForCompletion = falseolduğunda kullanın.
Başarılı bir görevin ölçütleri. Varsayılan olarak, görev başarılı olduğunda 200 OK durumunu döndürür.
Örnek: {"status" : "successful"}yanıt için ifadesi eq(root['status'], 'successful')olabilir.
koşulları belirtmehakkında daha fazla bilgi edinin.
Görev denetimi seçenekleri
Tüm görevlerin, 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'nde 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 yayın işlem hattının aracısız iş kullanın.
Geri Çağırma tamamlanma olayı olarak seçildiğinde görev tamamlanma sinyali nerede olmalıdır?
İşlemin tamamlanmasının sinyalini vermek için, işlevin aşağıdaki işlem hatları REST uç noktasına POST tamamlama verileri 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ı 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ışır | Sunucu, ServerGate |
| Talepleri | Hiç kimse |
| Özellikleri | Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz. |
| Komut kısıtlamaları | Herhangi bir |
| Ayarlanabilir değişkenleri | Herhangi bir |
| Aracı sürümü | Desteklenen tüm aracı sürümleri. |
| Görev kategorisi | Fayda |
Ayrıca bkz.
- Azure Pipelines ile Azure İşlevleri dağıtımlarını otomatikleştirme
- Aracısız iş