このタスクをリリースパイプラインの エージェントレスジョブ で使い、関数アプリでHTTPトリガー関数を呼び出し、応答を解析します。 関数アプリはAzure Functionsで作成・ホストする必要があります。
構文
# Invoke Azure Function v2
# Invoke an Azure Function.
- task: AzureFunction@2
inputs:
#azureSubscription: # string. Alias: azureServiceConnection | connectedServiceARM. Azure Service Connection.
function: # string. Required. Azure function URL.
#key: # string. 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.
入力
azureSubscription
-
Azure サービス接続
入力エイリアス: azureServiceConnection | connectedServiceARM。
string。
サービス接続はAzure関数を呼び出す際に認証に使われていました。 サービスプリンシパルまたはマネージドIDアクセスのためのEntraアクセストークンを提供します。
function
-
Azure 関数 URL
string。 必須。
呼び出す必要があるAzure関数のURLです。 例: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1。
key
-
ファンクションキー
string。
関数またはホストキーで、その関数にアクセスして呼び出します。 キーを安全に保つために、秘密パイプライン変数を使って関数キーを格納します。 例: $(myFunctionKey)。
myFunctionKey は秘密鍵として値をとする環境レベルの秘密変数です。
method
-
方法
string。 必須。 使用できる値: OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、PATCH。 既定値: POST。
関数を呼び出すHTTPメソッド。
headers
-
ヘッダー
string。 既定値: {\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}。
JSON形式のヘッダーは、関数に送られるリクエストに添付されます。
queryParameters
-
クエリパラメータ
string。
関数URLに付加する文字列クエリ。
?や&から始めてはいけません。
body
-
本文
string。 Optional.
method != GET && method != HEADするときに使用します。
リクエスト用のJSON形式のメッセージボディです。
waitForCompletion
-
完成イベント
string。 必須。 許可値: true (コールバック)、 false (ApiResponse)。 既定値: false。
タスクの完了報告方法。
-
false- API 応答 - 関数は成功を返し、成功基準はtrueに評価されます。 -
true- コールバック - この関数はタイムラインレコードを更新するためにコールバックを行います。
successCriteria
-
成功基準
string。 Optional.
waitForCompletion = falseするときに使用します。
成功するタスクの基準。 デフォルトでは、タスクが成功するとステータス 200 OK 戻ります。 この入力が指定されていなければ、応答内容は結果に影響を与えません。
例:応答 {"status" : "successful"}では、表現が eq(root['status'], 'successful')できます。
条件の指定について詳しく学びましょう。
タスク コントロールのオプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「コントロール オプションと一般的なタスク プロパティを参照してください。
出力変数
なし。
注釈
このタスクをリリースパイプラインの
コールバックが完了イベントとして選ばれた場合、タスクはどこで完了を知らせるべきでしょうか?
完了を示すために、関数は完了データを以下のパイプラインRESTエンドポイントにPOSTします。
{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" }
詳細についてはこの簡単なcmdlineアプリケーションを参照してください。 さらに、エージェントレスタスクのリアルタイムログ記録やタスク状況管理を可能にするC#ヘルパーライブラリも利用可能です。 詳細情報
なぜタイムアウトが長いのにタスクは1分以内に失敗するのでしょうか?
関数が1分以上実行された場合は 、Callback completeイベントを使用します。 APIレスポンス完了オプションは、60秒以内に完了するリクエストに対応しています。
Examples
以下の2つの例は機能的に同値です。 最初の例は認証にAzure Resource Managerのサービス接続を利用し、2つ目の例は認証のために関数キーを直接使用しています。
trigger: none
pool: server
steps:
- task: AzureFunction@2
inputs:
# Authenticate using Azure Resource Manager service connection
authenticationType: 'azureServiceConnection'
azureServiceConnection: 'working-app-registration'
function: 'https://myfuction.azurewebsites.net/api/my-test-trigger-function'
method: 'GET'
waitForCompletion: 'false'
trigger: none
pool: server
steps:
- task: AzureFunction@2
inputs:
# Authenticate using function key
authenticationType: 'functionKey'
key: 'aaaaaaaa-0b0b-1c1c-2d2d-333333333333'
function: 'https://myfuction.azurewebsites.net/api/my-test-trigger-function'
method: 'GET'
waitForCompletion: 'false'