AzureFunction@2 - 関数v2タスクAzure呼び出し

このタスクをリリースパイプラインの エージェントレスジョブ で使い、関数アプリで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 | connectedServiceARMstring

サービス接続はAzure関数を呼び出す際に認証に使われていました。 サービスプリンシパルまたはマネージドIDアクセスのためのEntraアクセストークンを提供します。


function - Azure 関数 URL
string。 必須。

呼び出す必要があるAzure関数のURLです。 例: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1


key - ファンクションキー
string

関数またはホストキーで、その関数にアクセスして呼び出します。 キーを安全に保つために、秘密パイプライン変数を使って関数キーを格納します。 例: $(myFunctionKey)myFunctionKey は秘密鍵として値をとする環境レベルの秘密変数です。


method - 方法
string。 必須。 使用できる値: OPTIONSGETHEADPOSTPUTDELETETRACEPATCH。 既定値: 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')できます。 条件の指定について詳しく学びましょう。


タスク コントロールのオプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「コントロール オプションと一般的なタスク プロパティを参照してください。

出力変数

なし。

注釈

このタスクをリリースパイプラインの agentless job で使用し、Azure Functionsで作成・ホストされた関数アプリで HTTP トリガー関数を呼び出し、応答を解析します。

コールバックが完了イベントとして選ばれた場合、タスクはどこで完了を知らせるべきでしょうか?

完了を示すために、関数は完了データを以下のパイプライン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'

Requirements

要件 Description
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
実行 サーバー、ServerGate
Demands None
機能 このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン サポートされているすべてのエージェント バージョン。
タスク カテゴリ ユーティリティ