次の方法で共有


AzureFunctionApp@2 - Azure Functions Deploy v2 タスク

.NET、Python、JavaScript、PowerShell、Java ベースの Web アプリケーションを使用して関数アプリを更新します。

構文

# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
  inputs:
    connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection. 
    appType: # 'functionApp' | 'functionAppLinux'. Required. App type. 
    #isFlexConsumption: false # boolean. Is Function App on Flex Consumption Plan. Default: false.
    appName: # string. Required. Azure Functions App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "" && isFlexConsumption = false. Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #runtimeStack: # 'DOTNET|6.0' | 'DOTNET-ISOLATED|6.0' | 'DOTNET-ISOLATED|7.0' | 'DOTNET-ISOLATED|8.0' | 'JAVA|8' | 'JAVA|11' | 'JAVA|17' | 'JAVA|21' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'NODE|20' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10' | 'PYTHON|3.11'. Optional. Use when appType = functionAppLinux && isFlexConsumption = false. Runtime stack. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && isFlexConsumption = false && appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
  inputs:
    connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection. 
    appType: # 'functionApp' | 'functionAppLinux'. Required. App type. 
    appName: # string. Required. Azure Functions App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #runtimeStack: # 'DOTNET|2.2' | 'DOTNET|3.1' | 'DOTNET|6.0' | 'DOTNET-ISOLATED|7.0' | 'JAVA|8' | 'JAVA|11' | 'NODE|8' | 'NODE|10' | 'NODE|12' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'PYTHON|3.6' | 'PYTHON|3.7' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10'. Optional. Use when appType = functionAppLinux. Runtime stack. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.

入力

Azure Resource Manager 接続 を する
入力エイリアス: azureSubscriptionstring. 必須。

デプロイ用の Azure Resource Manager サブスクリプションを選択します。


appType - アプリの種類の
string. 必須。 使用できる値: functionApp (Windows の Function App)、functionAppLinux (Linux 上の関数アプリ)。

デプロイの Azure Function App の種類を選択します。


flex 従量課金プランの関数アプリの isFlexConsumption -
boolean. 既定値: false.

関数アプリが Flex 従量課金プラン上にある場合は、true に設定します。


Azure Functions アプリ名 を する
string. 必須。

既存の Azure Functions アプリの名前を指定します。 表示される Function Apps は、選択したアプリの種類に基づいて表示されます。


スロットまたは App Service Environment にデプロイする
boolean. 随意。 appType != "" && isFlexConsumption = falseするときに使用します。 既定値: false.

既存のデプロイ スロットまたは Azure App Service Environment にデプロイします。 どちらのターゲットでも、タスクにはリソース グループ名が必要です。

デプロイ ターゲットがスロットの場合、既定では 運用 スロットになります。 その他の既存のスロット名も指定できます。

デプロイ ターゲットが Azure App Service Environment の場合は、スロット名を運用 のままにし、リソース グループ名を指定します。


スロットまたは App Service Environment にデプロイする
boolean. 随意。 appType != ""するときに使用します。 既定値: false.

既存のデプロイ スロットまたは Azure App Service Environment にデプロイします。 どちらのターゲットでも、タスクにはリソース グループ名が必要です。

デプロイ ターゲットがスロットの場合、既定では 運用 スロットになります。 その他の既存のスロット名も指定できます。

デプロイ ターゲットが Azure App Service Environment の場合は、スロット名を運用 のままにし、リソース グループ名を指定します。


resourceGroupName - リソース グループの
string. deployToSlotOrASE = trueする場合に必要です。

デプロイ ターゲットがデプロイ スロットまたは App Service Environment である場合は、リソース グループ名が必要です。

上記で指定した Azure App Service を含む Azure リソース グループを入力または選択します。


slotName - スロット
string. deployToSlotOrASE = trueする場合に必要です。 既定値: production.

運用スロットを除く既存のスロットを入力または選択します。


slotName - スロット
string. deployToSlotOrASE = trueする場合に必要です。 既定値: production.

運用スロット以外の既存のスロットを入力または選択します。


package - パッケージまたはフォルダー
string. 必須。 既定値: $(System.DefaultWorkingDirectory)/**/*.zip.

MSBuild または圧縮 zip ファイルによって生成された App Service コンテンツを含むパッケージまたはフォルダーへのファイル パス。 変数 (ビルド | リリース) とワイルドカードがサポートされています。 たとえば、$(System.DefaultWorkingDirectory)/**/*.zipします。


ランタイム スタック の
string. 随意。 appType = functionAppLinux && isFlexConsumption = falseするときに使用します。 使用できる値: DOTNET|6.0, DOTNET-ISOLATED|6.0, DOTNET-ISOLATED|7.0, DOTNET-ISOLATED|8.0, JAVA|8, JAVA|11, JAVA|17, JAVA|21, NODE|14, NODE|16, NODE|18, NODE|20, PYTHON|3.8, PYTHON|3.9, PYTHON|3.10, PYTHON|3.11.

関数アプリを実行するフレームワークとバージョンを指定します。 サポートされているランタイム バージョン、のいずれかを使用できます。 DOCKER|microsoft/azure-functions-* などの古い値は非推奨です。 タスク アシスタントのドロップダウン リストに新しい値が表示されます。 サポートされているランタイム バージョンで使用可能な新しいバージョンのフレームワークがある場合、一覧にない場合でも指定できます。

手記

現在、この値では、サイトが実行されている linuxFxVersion は更新されません。 つまり、スタックをノード 18 からノード 20 に更新することはできません。 現在、タスクはアプリ設定のみを更新します。


ランタイム スタック の
string. 随意。 appType = functionAppLinuxするときに使用します。 使用できる値: DOTNET|2.2 (DOTNET|2.2 (functionapp v2))、DOTNET|3.1 (DOTNET|3.1 (functionapp v3))、DOTNET|6.0 (DOTNET|6.0 (functionapp v4)、DOTNET-ISOLATED|7.0 (DOTNET-ISOLATED|7.0 (functionapp v4)))、JAVA|8 (JAVA|8 (functionapp v2//)) v3/v4))、JAVA|11 (JAVA|11 (functionapp v3/v4)))、NODE|8 (NODE|8 (functionapp v2)、NODE|10 (NODE|10 (functionapp v2/v3)))、NODE|12 (NODE|12 (functionapp v3)))、NODE|14 (NODE|14 (functionapp v3/v4)) NODE|16 (NODE|16 (functionapp v4)))、NODE|18 (NODE|18 (functionapp v4))、PYTHON|3.6 (PYTHON|3.6 (functionapp v2/v3)、PYTHON|3.7 (PYTHON|3.7 (functionapp v2/v) 3/v4)))、PYTHON|3.8 (PYTHON|3.8 (functionapp v3/v4)))、PYTHON|3.9 (PYTHON|3.9 (functionapp v3/v4)))、PYTHON|3.10 (PYTHON|3.10 (functionapp v3/v4))。

関数アプリを実行するフレームワークとバージョンを指定します。 サポートされているランタイム バージョン、のいずれかを使用できます。 DOCKER|microsoft/azure-functions-* などの古い値は非推奨です。 タスク アシスタントのドロップダウン リストに新しい値が表示されます。 サポートされているランタイム バージョンで使用可能な新しいバージョンのフレームワークがある場合、一覧にない場合でも指定できます。


appSettings - アプリ設定の
string.

構文 -key value を使用してアプリケーション設定を入力します (例: -Port 5000-RequestTimeout 5000-WEBSITE_TIME_ZONE)。 スペースを含む値を二重引用符で囲みます (例: "Eastern Standard Time")。

アプリ設定の詳細については、「Azure App Serviceの環境変数とアプリ設定の 」を参照してください。


deploymentMethod - 展開方法の
string. appType != "" && isFlexConsumption = false && appType != "" && package NotEndsWith .war && Package NotEndsWith .jarする場合に必要です。 使用できる値: auto (自動検出)、zipDeploy (Zip 配置)、runFromPackage (パッケージから実行を使用した Zip 配置)。 既定値: auto.

アプリの 展開方法 を指定します。 Linux Consumption アプリでは、この構成はサポートされていません。


deploymentMethod - 展開方法の
string. appType != "" && package NotEndsWith .war && Package NotEndsWith .jarする場合に必要です。 使用できる値: auto (自動検出)、zipDeploy (Zip 配置)、runFromPackage (パッケージから実行を使用した Zip 配置)。 既定値: auto.

アプリの 展開方法 を指定します。 Linux Consumption アプリでは、この構成はサポートされていません。


deploymentMethod - 展開方法の
string. appType != "" && package NotEndsWith .war && Package NotEndsWith .jarする場合に必要です。 使用できる値: auto (自動検出)、zipDeploy (Zip 配置)、runFromPackage (パッケージから実行を使用した Zip 配置)。 既定値: auto.

アプリの 展開方法を選択します。 Linux 従量課金アプリでは、この構成はサポートされていません。


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

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

出力変数

このタスクでは、次の 出力変数を定義します。この変数は、ダウンストリームのステップ、ジョブ、およびステージで使用できます。

AppServiceApplicationUrl
選択した Azure Function App のアプリケーション URL を します。

備考

Azure 関数のデプロイ タスクは、Azure Functions を更新して、Functions を Azure にデプロイするために使用されます。 このタスクは、Windows、Linux、または Mac を実行するクロスプラットフォームの Azure Pipelines エージェントで動作し、RunFromPackage、Zip Deploy、Kudu REST APIの基になるデプロイ テクノロジを使用します。

このタスクは、サポートされている言語Azure Functions に対して機能します。

タスクの前提条件

タスクが正常に動作するためには、次の前提条件をターゲット コンピューターにセットアップする必要があります。

Azure 関数

このタスクは、Azure Functions プロジェクトを既存の Azure 関数にデプロイするために使用されます。 タスクを実行する前に、Azure 関数アプリが存在している必要があります。 Azure Function App は、Azure portalから作成できます。 または、Azure PowerShell タスク を使用して、Azure Function アプリ プロビジョニングおよび構成 AzureRM PowerShell スクリプトを実行できます。

このタスクを使用して、Azure Functions (Windows/Linux) デプロイできます。

Azure サブスクリプション

Azure にデプロイするには、[アカウント管理] セクションの [サービス] タブを使用して Azure サブスクリプションを Azure Pipelines にリンクする必要があります。 [アカウント管理] 画面 (画面右上の歯車アイコン) を開き、[サービス] タブをクリックして、ビルドまたはリリース管理の定義で使用する Azure サブスクリプションを追加します。

ARM サービス エンドポイントを作成し、Azure Resource Manager エンドポイントの種類 使用します。 詳細については、こちらのリンク に記載されている手順に従ってください。

タスクは Azure クラシック サービス エンドポイントでは機能せず、タスクのパラメーターにこれらの接続は一覧表示されません。

デプロイ方法

このタスクでは、いくつかの展開方法を使用できます。

デザイナー タスクでパッケージ ベースの展開オプションを変更するには、[追加の展開オプション] 展開オプションを展開し、[展開方法の選択]有効にします。

このタスクでは、Azure App Service と Azure Pipelines エージェントの種類に基づいて、適切なデプロイ テクノロジを使用します。 タスクで使用されるデプロイ テクノロジは次のとおりです。

既定では、タスクは入力パッケージ、App Service の種類、およびエージェント OS に基づいて適切なデプロイ テクノロジの選択を試みます。

  • デプロイ後のスクリプトが提供されている場合は、Zip Deploy を使用します。
  • App Service の種類が Web App on Linux の場合は、Zip Deploy を使用します。
  • .war ファイルが指定されている場合は、War Deploy を使用します。
  • .jar ファイルが指定されている場合は、Run-From-Zip を使用します。
  • その他のすべてのタスクでは、パッケージから実行 (Zip Deploy 経由) を使用します。

Windows 以外のエージェント (任意の App Service の種類) では、タスクは Web アプリをデプロイするために kudu REST API に依存します。

Kudu REST API

Kudu REST API は、ターゲットが Windows 上の Web アプリ、Web App on Linux (組み込みソース)、または関数アプリである場合、Windows と Linux の両方のオートメーション エージェントで動作します。 このタスクでは、Kudu を使用して Azure App Service にファイルをコピーします。

Zip デプロイ

Zip 配置では、選択したパッケージまたはフォルダーから .zip 展開パッケージが作成されます。 次に、ファイルの内容を Azure の App Service 名関数アプリの wwwroot フォルダーにデプロイします。 このオプションは、wwwroot フォルダー内のすべての既存のコンテンツを上書きします。 詳細については、Azure Functionsの Zip デプロイに関するページを参照してください。

パッケージから実行

パッケージから実行すると、Zip Deploy と同じ展開パッケージが作成されます。 ファイルを wwwroot フォルダーにデプロイする代わりに、Functions ランタイムによってパッケージ全体がマウントされます。 このオプションを使用すると、wwwroot フォルダー内のファイルは読み取り専用になります。 詳細については、「パッケージ ファイルから Azure Functions を実行する」を参照してください。

トラブルシューティング

エラー: Azure のアクセス トークンをフェッチできませんでした。 使用されているサービス プリンシパルが有効であり、有効期限が切れていないかどうかを確認します。

このタスクでは、サービス接続のサービス プリンシパルを使用して Azure で認証します。 サービス プリンシパルの有効期限が切れているか、App Service に対するアクセス許可がない場合、タスクはこのエラーで失敗します。 使用されているサービス プリンシパルの有効性と、それがアプリの登録に存在することを確認します。 詳細については、「ロールベースのアクセス制御を使用して Azure サブスクリプション リソースへのアクセスを管理するを参照してください。 このブログ記事 には、サービス プリンシパル認証の使用に関する詳細も記載されています。

SSL エラー

App Service で証明書を使用する場合、証明書は信頼された証明機関によって署名されている必要があります。 Web アプリで証明書の検証エラーが発生した場合は、自己署名証明書を使用している可能性があります。 エラーを解決するには、VSTS_ARM_REST_IGNORE_SSL_ERRORS という名前の変数をビルドまたはリリース パイプラインの true 値に設定します。

リリースが長時間ハングし、失敗する

この問題は、App Service プランの容量が不足している可能性があります。 この問題を解決するには、App Service インスタンスをスケールアップして使用可能な CPU、RAM、ディスク領域を増やすか、別の App Service プランを試すことができます。

5xx エラー コード

5xx エラーが表示される場合は、Azure サービスの状態を確認

Azure 関数が突然動作を停止しました

前回のデプロイから 1 年以上が経過した場合、Azure Functions は突然動作を停止する可能性があります。 "deploymentMethod" で "RunFromPackage" を使用してデプロイすると、有効期限が 1 年の SAS が生成され、アプリケーション構成で "WEBSITE_RUN_FROM_PACKAGE" の値として設定されます。 Azure Functions では、この SAS を使用して関数の実行用のパッケージ ファイルを参照するため、SAS の有効期限が切れている場合、関数は実行されません。 この問題を解決するには、もう一度デプロイして、有効期限が 1 年の SAS を生成します。

エラー: 指定されたパターンのパッケージが見つかりません

タスクに記載されているパッケージがビルドまたは前のステージで成果物として発行され、現在のジョブにダウンロードされているかどうかを確認します。

エラー: msBuild パッケージの種類では、zip 配置オプションを使用した発行はサポートされていません

MSBuild タスクを使用して作成された Web パッケージ (既定の引数を使用) には、Web 配置によってのみ正しく配置できる入れ子になったフォルダー構造があります。 publish-to-zip デプロイ オプションを使用してこれらのパッケージをデプロイすることはできません。 パッケージ構造を変換するには、次の手順を実行します。

  1. ビルド ソリューション タスクで、MSBuild 引数/p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent"に変更します。

    ビルド ソリューションの値を示すスクリーンショット。

  2. アーカイブ タスクを追加し、次のように値を変更します。

    1. ルートフォルダまたはファイルを $(System.DefaultWorkingDirectory)\\WebAppContentにアーカイブ に変更します。

    2. [ルート フォルダー名の先頭に してパスをアーカイブする] チェック ボックス オフにします。

      アーカイブ値を示すスクリーンショット。

Windows での関数アプリのデプロイは成功しますが、アプリは機能しません

この問題は、web.config ファイルがアプリに存在しない場合に発生する可能性があります。 web.config ファイルをソースに追加するか、タスクの アプリケーションと構成設定 を使用して自動的に生成することができます。

  1. タスクを選択し、Python、Node.js、Go、Java アプリのの web.config パラメーターを生成するに移動します。

    web.config パラメーターの生成セクションを示すスクリーンショット。

  2. Python、Node.js、Go、Java アプリの web.config パラメーターの生成 の下にある [その他] ボタン (...) を選択して、パラメーターを編集

    web.config 生成パラメーターを示すスクリーンショット。

  3. アプリケーション フレームワークの の一覧でアプリケーションの種類を選択します。

  4. [OK]選択します。 これにより、web.config ファイルの生成に必要な web.config パラメーターが設定されます。

FAQ

サービス接続を構成する方法

このタスクには、Azure Resource Manager サービス接続が必要です。

Application Insights を使用して Web ジョブのデプロイを構成する方法

App Service にデプロイするときに、Application Insights を構成 し、を有効にしている場合は、も有効にする必要があります。 このオプションを有効にすると、Application Insights 拡張機能は安全な状態を保ちます。 Application Insights の継続的な Web ジョブが App_Data フォルダーにインストールされているため、この手順が必要です。

App Service へのデプロイ中にエージェントがプロキシの背後にある場合は、どのように構成すればよいですか?

セルフホステッド エージェントに Web プロキシが必要な場合は、構成時にエージェントにプロキシについて通知できます。 これにより、エージェントはプロキシ経由で Azure Pipelines または Azure DevOps Server に接続できます。 Web プロキシの背後でセルフホステッド エージェントを実行する方法の詳細について説明します。

Azure Resource Manager サービス接続と Microsoft ホステッド エージェントを使用して内部 App Service Environment にデプロイできない

設計上、Microsoft がホストするエージェントは App Service Environment では機能しません。 代わりに、App Service Environment と同じ仮想ネットワーク内にある仮想マシンでプライベート エージェントを構成する必要があります。 また、リソース間の通信を有効にするプライベート DNS ゾーンを設定します。

Windows に Azure 関数をデプロイするサンプル YAML スニペットを次に示します。


variables:
  azureSubscription: Contoso
  # To ignore SSL error, uncomment the below variable
  # VSTS_ARM_REST_IGNORE_SSL_ERRORS: true

steps:
- task: AzureFunctionApp@2
  displayName: Azure Function App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplefunctionapp
    appType: functionApp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Linux に関数をデプロイするには、appType パラメーターを追加し、appType: functionAppLinuxに設定します。 値を指定しない場合は、functionApp が既定値です。

デプロイ方法を Zip Deploy として明示的に指定するには、パラメーター deploymentMethod: zipDeploy追加します。 このパラメーターでサポートされているもう 1 つの値は、runFromPackageです。 値を指定しない場合は、auto が既定値です。

CI/CD パイプラインを作成する方法を示すチュートリアルについては、「Java をビルドして Azure Functionsにデプロイする」を参照してください。

必要条件

要件 形容
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
実行日 エージェント、DeploymentGroup
の需要 何一つ
機能の このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 任意
設定可能な変数 任意
エージェントのバージョン 2.104.1 以上
タスク カテゴリ 展開