.NET、Python、JavaScript、PowerShell、Java ベースの Web アプリケーションを使用して関数アプリを更新します。
Syntax
# 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' | 'DOTNET-ISOLATED|9.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 && 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.
Inputs
Azure Resource Manager 接続 を
Input alias: azureSubscription
.
string
. Required.
デプロイ用の Azure Resource Manager サブスクリプションを選択します。
appType
-
App type
string
. Required. 使用できる値: functionApp
(Windows の Function App)、functionAppLinux
(Linux 上の関数アプリ)。
デプロイの Azure Function App の種類を選択します。
Azure Functions アプリ名 を
string
. Required.
既存の Azure Functions アプリの名前を指定します。 表示される Function Apps は、選択したアプリの種類に基づいて表示されます。
スロットまたは App Service Environment にデプロイする
boolean
. Optional.
appType != "" && isFlexConsumption = false
するときに使用します。 既定値: false
.
既存のデプロイ スロットまたは Azure App Service Environment にデプロイします。 どちらのターゲットでも、タスクにはリソース グループ名が必要です。
If the deployment target is a slot, it will default to the production slot. その他の既存のスロット名も指定できます。
If the deployment target is an Azure App Service Environment, leave the slot name as production and specify the Resource group name.
スロットまたは App Service Environment にデプロイする
boolean
. Optional.
appType != ""
するときに使用します。 既定値: false
.
既存のデプロイ スロットまたは Azure App Service Environment にデプロイします。 どちらのターゲットでも、タスクにはリソース グループ名が必要です。
If the deployment target is a slot, it will default to the production slot. その他の既存のスロット名も指定できます。
If the deployment target is an Azure App Service Environment, leave the slot name as production and specify the Resource group name.
resourceGroupName
-
Resource group
string
.
deployToSlotOrASE = true
する場合に必要です。
デプロイ ターゲットがデプロイ スロットまたは App Service Environment である場合は、リソース グループ名が必要です。
上記で指定した Azure App Service を含む Azure リソース グループを入力または選択します。
slotName
-
Slot
string
.
deployToSlotOrASE = true
する場合に必要です。 既定値: production
.
運用スロットを除く既存のスロットを入力または選択します。
slotName
-
Slot
string
.
deployToSlotOrASE = true
する場合に必要です。 既定値: production
.
運用スロット以外の既存のスロットを入力または選択します。
package
-
パッケージまたはフォルダー
string
. Required. 既定値: $(System.DefaultWorkingDirectory)/**/*.zip
.
MSBuild または圧縮 zip ファイルによって生成された App Service コンテンツを含むパッケージまたはフォルダーへのファイル パス。 Variables ( Build | Release) and wildcards are supported. たとえば、$(System.DefaultWorkingDirectory)/**/*.zip
します。
runtimeStack
-
Runtime stack
string
. Optional.
appType = functionAppLinux && isFlexConsumption = false
するときに使用します。 使用できる値: DOTNET|6.0
、 DOTNET-ISOLATED|6.0
、 DOTNET-ISOLATED|7.0
、 DOTNET-ISOLATED|8.0
、 DOTNET-ISOLATED|9.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-*
などの古い値は非推奨です。 New values are listed in the drop-down list in the task assistant.
サポートされているランタイム バージョンで使用可能な新しいバージョンのフレームワークがある場合は、一覧にない場合でも指定できます。
Note
This value currently doesn't update the linuxFxVersion that the site is running on. つまり、スタックをノード 18 からノード 20 に更新することはできません。 現在、タスクはアプリ設定のみを更新します。
runtimeStack
-
Runtime stack
string
. Optional.
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-*
などの古い値は非推奨です。 New values are listed in the drop-down list in the task assistant.
サポートされているランタイム バージョンで使用可能な新しいバージョンのフレームワークがある場合は、一覧にない場合でも指定できます。
appSettings
-
App settings
string
.
構文 -key value
を使用してアプリケーション設定を入力します (例: -Port 5000
-RequestTimeout 5000
-WEBSITE_TIME_ZONE
)。 スペースを含む値を二重引用符で囲みます (例: "Eastern Standard Time"
)。
アプリ設定の詳細については、「Azure App Serviceの環境変数とアプリ設定の
deploymentMethod
-
Deployment method
string
.
appType != "" && isFlexConsumption = false && package NotEndsWith .war && Package NotEndsWith .jar
する場合に必要です。 使用できる値: auto
(自動検出)、zipDeploy
(Zip 配置)、runFromPackage
(パッケージから実行を使用した Zip 配置)。 既定値: auto
.
Specifies the deployment method for the app. Linux Consumption アプリでは、この構成はサポートされていません。
SKU が Linux 従量課金である場合は、zip デプロイ用に Azure Web ジョブ ストレージ アプリの設定を設定する必要があります。 Zip デプロイでは、ストレージ アカウントを使用してアプリケーション コードをアップロードし、アプリにマウントします。
deploymentMethod
-
Deployment method
string
.
appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
する場合に必要です。 使用できる値: auto
(自動検出)、zipDeploy
(Zip 配置)、runFromPackage
(パッケージから実行を使用した Zip 配置)。 既定値: auto
.
Specifies the deployment method for the app. Linux Consumption アプリでは、この構成はサポートされていません。
SKU が Linux 従量課金である場合は、zip デプロイ用に Azure Web ジョブ ストレージ アプリの設定を設定する必要があります。 Zip デプロイでは、ストレージ アカウントを使用してアプリケーション コードをアップロードし、アプリにマウントします。
deploymentMethod
-
Deployment method
string
.
appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
する場合に必要です。 使用できる値: auto
(自動検出)、zipDeploy
(Zip 配置)、runFromPackage
(パッケージから実行を使用した Zip 配置)。 既定値: auto
.
Chooses the deployment method for the app. Linux Consumption アプリでは、この構成はサポートされていません。
SKU が Linux 従量課金である場合は、zip デプロイ用に Azure Web ジョブ ストレージ アプリの設定を設定する必要があります。 Zip デプロイでは、ストレージ アカウントを使用してアプリケーション コードをアップロードし、アプリにマウントします。
タスク コントロールのオプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール のオプションと一般的なタスクのプロパティ」を参照してください。
Output variables
This task defines the following output variables, which you can consume in downstream steps, jobs, and stages.
AppServiceApplicationUrl
選択した Azure Function App のアプリケーション URL を します。
Remarks
The Azure Function Deployment task is used to update Azure Functions to deploy Functions to Azure. このタスクは、Windows、Linux、または Mac を実行するクロスプラットフォームの Azure Pipelines エージェントで動作し、RunFromPackage、Zip Deploy、 Kudu REST API の基になるデプロイ テクノロジを使用します。
The task works for the Azure Functions supported languages.
タスクの前提条件
タスクが正常に動作するためには、次の前提条件をターゲット コンピューターにセットアップする必要があります。
Azure Function
このタスクは、Azure Functions プロジェクトを既存の Azure 関数にデプロイするために使用されます。 タスクを実行する前に、Azure 関数アプリが存在している必要があります。 The Azure Function App can be created from the Azure portal. または、 Azure PowerShell タスク を使用して AzureRM PowerShell スクリプト を実行し、Azure 関数アプリをプロビジョニングして構成することもできます。
The task can be used to deploy Azure Functions (Windows/Linux).
Azure Subscription
Azure にデプロイするには、[アカウント管理] セクションの [サービス] タブを使用して Azure サブスクリプションを Azure Pipelines にリンクする必要があります。 [アカウント管理] 画面 (画面右上の歯車アイコン) を開き、[サービス] タブをクリックして、ビルドまたはリリース管理の定義で使用する Azure サブスクリプションを追加します。
Create the ARM service endpoint and use Azure Resource Manager endpoint type. For more details, follow the steps listed in the link here.
タスクは Azure クラシック サービス エンドポイントでは機能せず、タスクのパラメーターにこれらの接続は一覧表示されません。
Deployment methods
このタスクでは、いくつかの展開方法を使用できます。
デザイナー タスクでパッケージ ベースの展開オプションを変更するには、[追加の展開オプション]
このタスクでは、Azure App Service と Azure Pipelines エージェントの種類に基づいて、適切なデプロイ テクノロジを使用します。 タスクで使用されるデプロイ テクノロジは次のとおりです。
- Kudu REST API の
- Zip Deploy
- パッケージから実行
既定では、タスクは入力パッケージ、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
クドゥー REST API
Kudu REST API は、ターゲットが Windows 上の Web アプリ、Linux 上の Web アプリ (組み込みのソース)、または関数アプリである場合、Windows と Linux の両方のオートメーション エージェントで動作します。 このタスクでは、Kudu を使用して Azure App Service にファイルをコピーします。
Zip Deploy
Zip 配置では、選択したパッケージまたはフォルダーから .zip 展開パッケージが作成されます。 次に、ファイルの内容を Azure の App Service 名関数アプリの wwwroot フォルダーにデプロイします。 このオプションは、wwwroot フォルダー内のすべての既存のコンテンツを上書きします。 詳細については、Azure Functionsの
パッケージから実行
パッケージから実行すると、Zip Deploy と同じ展開パッケージが作成されます。 ファイルを wwwroot フォルダーにデプロイする代わりに、Functions ランタイムによってパッケージ全体がマウントされます。 このオプションを使用すると、wwwroot フォルダー内のファイルは読み取り専用になります。 詳細については、「 パッケージ ファイルから Azure Functions を実行する」を参照してください。
Troubleshooting
エラー: Azure のアクセス トークンをフェッチできませんでした。 使用されているサービス プリンシパルが有効であり、有効期限が切れていないかどうかを確認します。
このタスクでは、サービス接続のサービス プリンシパルを使用して Azure で認証します。 サービス プリンシパルの有効期限が切れているか、App Service に対するアクセス許可がない場合、タスクはこのエラーで失敗します。 使用されているサービス プリンシパルの有効性と、それがアプリの登録に存在することを確認します。 詳細については、「 ロールベースのアクセス制御を使用して Azure サブスクリプション リソースへのアクセスを管理する」を参照してください。 このブログ投稿 には、サービス プリンシパル認証の使用に関する詳細も記載されています。
SSL error
App Service で証明書を使用する場合、証明書は信頼された証明機関によって署名されている必要があります。 Web アプリで証明書の検証エラーが発生した場合は、自己署名証明書を使用している可能性があります。 エラーを解決するには、VSTS_ARM_REST_IGNORE_SSL_ERRORS
という名前の変数をビルドまたはリリース パイプラインの true
値に設定します。
リリースが長時間ハングし、失敗する
この問題は、App Service プランの容量が不足している可能性があります。 この問題を解決するには、App Service インスタンスをスケールアップして使用可能な CPU、RAM、ディスク領域を増やすか、別の App Service プランを試すことができます。
5xx error codes
If you're seeing a 5xx error, check the status of your Azure service.
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 デプロイ オプションを使用してこれらのパッケージをデプロイすることはできません。 パッケージ構造を変換するには、次の手順を実行します。
In the Build solution task, change the MSBuild Arguments to
/p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent"
:アーカイブ タスクを追加し、次のように値を変更します。
に変更します。
[ ルート フォルダー名をアーカイブ パスに追加する ] チェック ボックスをオフにします。
Windows での関数アプリのデプロイは成功しますが、アプリは機能しません
この問題は、web.config ファイルがアプリに存在しない場合に発生する可能性があります。 web.config ファイルをソースに追加するか、タスクの アプリケーションと構成設定 を使用して自動的に生成することができます。
タスクを選択し、[ Python、Node.js、Go、Java アプリの web.config パラメーターを生成する] に移動します。
Python、Node.js、Go、Java アプリの [web.config パラメーターの生成] の下にある [その他] ボタン (...) を選択して、パラメーターを編集します。
Select your application type in the Application framework list.
Select OK. これにより、web.config ファイルの生成に必要な web.config パラメーターが設定されます。
FAQs
サービス接続を構成する方法
このタスクには、Azure Resource Manager サービス接続
Application Insights を使用して Web ジョブのデプロイを構成する方法
When you're deploying to an App Service, if you have Application Insights configured and you've enabled Remove additional files at destination
, you also need to enable Exclude files from the App_Data folder
. このオプションを有効にすると、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 ゾーンを設定します。
Examples
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 にデプロイする」を参照してください。
Requirements
Requirement | Description |
---|---|
Pipeline types | YAML、クラシック ビルド、クラシック リリース |
Runs on | Agent, DeploymentGroup |
Demands | None |
Capabilities | このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。 |
Command restrictions | Any |
Settable variables | Any |
Agent version | 2.104.1 以上 |
Task category | Deploy |