Azure Functions 用のパッケージ ベースのデプロイ

この記事では、すぐに実行可能な .zip デプロイメントパッケージを作成し、Azureにデプロイし、ファンクションアプリをパッケージから直接実行するように設定する方法を説明します。 Azure Functions Core Tools、Azure CLI、またはデプロイメントのREST APIを使って展開できます。

パッケージベースのデプロイメントは、コードから動作する関数型アプリのデフォルトです。 展開技術やパッケージ構成はホスティングプランによって異なります。 この記事の冒頭でホスティングプランを選択してください。

Azure Functionsは、Azure App Serviceが提供するすべての継続的デプロイおよび統合オプションを備えています。 詳細については、「Azure Functions の継続的なデプロイ」を参照してください。

ホスティングプランによるパッケージ展開

以下の表は、各ホスティングプランの展開プロセスとパッケージ構成をまとめたものです。

ホスティング プラン 展開プロセス パッケージ構成
Flex 従量課金プラン マネージドパッケージ展開 デフォルトでデプロイ済みパッケージから動作します。 WEBSITE_RUN_FROM_PACKAGE は設定しないでください。
プレミアムプラン ZIP デプロイ WEBSITE_RUN_FROM_PACKAGEを1に設定して、デプロイしたパッケージから実行してください。
Dedicated (App Service) プラン ZIP デプロイ WEBSITE_RUN_FROM_PACKAGEを1に設定して、デプロイしたパッケージから実行してください。
Windowsの消費プラン ZIP デプロイ WEBSITE_RUN_FROM_PACKAGEを1に設定して、デプロイしたパッケージから実行してください。
Linuxでの消費計画 リモートビルドまたは外部パッケージURL ローカルで構築したパッケージには外部パッケージURLを使いましょう。
Azure Container Apps コンテナイメージのデプロイ パッケージベースのコード展開は適用されません。

Note

この記事の内容は、現在選ばれたホスティングプランには関係ありません。 別のプランを選ぶには、この記事上部のセレクターをご利用ください。 すべてのホスティングプランの比較については、Azure Functionsホスティングオプションをご覧ください。

Azure Container Apps上でホストされる関数アプリは、.zip パッケージではなくコンテナイメージとして展開されます。 イメージベースの関数アプリを作成・デプロイするには、「コードを使ってAzure Container Appsで関数アプリを作成する」をご覧ください。

デプロイメントパッケージを作成する

ほとんどの場合、自分でデプロイメントパッケージを作成する必要はありません。 これらのツールベースのデプロイメントは、パッケージを公開プロセスの一部として作成します:

Azure Pipelinesデプロイでは、パイプラインビルドステップで .zip アーカイブが作成され、AzureFunctionAppデプロイメントタスクに渡されます。

すぐに実行可能なデプロイメントパッケージを直接扱う必要がある場合は、func packを使ってパッケージを作成しましょう。 例えば、外部 パッケージURLを使って自分でパッケージを作成してください。

.zip アーカイブは手動で作成することもできます。 アーカイブを手動で作成する際は、これらのパッケージ構造要件に従ってください。

展開パッケージの要件

デプロイしようとする zip アーカイブには、開発した関数アプリの実行に必要なすべてのファイルを含める必要があります。 組み込みの .zip 圧縮機能または Microsoft 以外のツールを使用して、Functions プロジェクト フォルダーのコンテンツから zip アーカイブを手動で作成できます。

アーカイブには、抽出されたフォルダーのルートにある host.json ファイルを含める必要があります。 関数アプリ用に選択した言語スタックによって、他の要件が作成されます。

重要

デプロイの目的で、コンパイル済みの出力を生成する言語の場合は、プロジェクト フォルダー全体ではなく、発行する予定の出力フォルダーの内容を圧縮してください。 zip アーカイブの内容を Functions で抽出する場合、host.json ファイルはパッケージのルート内に存在する必要があります。

zipデプロイメントプロセスは、.zip アーカイブのファイルやフォルダを wwwroot ディレクトリに展開します。 アーカイブ作成時に親ディレクトリを含めると、システムは wwwrootで見たいファイルを見つかりません。

パッケージの配置

Flex Consumptionは パッケージ展開 を用いて、アプリのデプロイストレージコンテナに準備済みのパッケージを保存します。 アプリはこのパッケージから直接動作します。 WEBSITE_RUN_FROM_PACKAGEアプリの設定は設定しないでください。

Core Tools、Visual Studio Code、またはAzure CLIを使ってパッケージを展開してください。 これらのツールは、Flex Consumptionアプリに対して正しいパッケージ展開動作を自動的に選択します。

これらのツールは、パッケージをアプリのデプロイメントエンドポイントに送信することでプッシュデプロイメントを実行します。 フレックスコンシューマの場合は、これらのクライアントがアプリのscmホスト上の/api/publishにパッケージを送信します。 展開エンドポイントがプライベートエンドポイント経由でのみ到達可能な場合、展開を実行するコンピュータ、ランナー、またはエージェントはプライベートデプロイメントエンドポイントとのネットワーク接続とDNS解決が必要です。 デプロイメントサービスは、処理済みのパッケージを設定されたデプロイコンテナに格納します。パッケージを直接このコンテナにアップロードしてもデプロイされません。 開始クライアントからデプロイエンドポイントへのプッシュを行わずにデプロイするには、デプロイサービスがアクセス可能なパッケージURLを持つBicepまたはARMテンプレートデプロイメントを使用します。

Azure CLI を使用したデプロイ

az functionapp deployment source config-zipコマンドを使ってパッケージを展開します:

az functionapp deployment source config-zip --resource-group <RESOURCE_GROUP> \
  --name <APP_NAME> --src <ZIP_FILE_PATH>

ソースプロジェクトでリモート ビルドが必要な場合は、--build-remote true を追加してください。 すでに実行準備状態に組み込まれているパッケージ、例えばGoデプロイメントパッケージ func pack リモートビルドを要求しないでください。

デプロイメントストレージの設定や以前のデプロイメントの回復については、 Flex Consumption プランの「機能アプリを作成および管理」をご覧ください。

パッケージの配置

プレミアム、専用、コンシューマストプランのアプリはzipデプロイメントAPIを使っています。 展開サービスは以下の操作を実行します:

  • 以前の展開で残ったファイルを削除してください。
  • デプロイメントスクリプトやその他のデプロイカスタマイズを実行してください。
  • デプロイメントログを書きます。
  • 同期機能がトリガーされます。

重要

zipデプロイメントでは、前のデプロイメントのファイルがそのデプロイメントの一部だった際に削除または更新されます。 デプロイメントプロセスは、前のデプロイメントに含まれていなかった他のファイルやディレクトリを関数アプリ内に保持します。 実装の詳細については、zip デプロイのリファレンスを参照してください。

Azure CLI を使用したデプロイ

Azure CLIを使ってプッシュデプロイをトリガーしてください。 その場合は、az functionapp deployment source config-zip コマンドを使用して、.zip ファイルを関数アプリにプッシュ デプロイします。 このコマンドを使用するには、Azure CLI バージョン 2.0.21 以降を使用する必要があります。 使用している Azure CLI のバージョンを確認するには、 az --version コマンドを使用します。

次のコマンドでは、<zip_file_path> プレース ホルダーを .zip ファイルの場所へのパスに置き換えてください。 また、<app_name> を関数アプリの一意の名前に置き換え、<resource_group> をリソース グループの名前に置き換えます。

az functionapp deployment source config-zip -g <resource_group> -n \
<app_name> --src <zip_file_path>

このコマンドは .zip ファイルからAzureの関数アプリにプロジェクトファイルをデプロイし、アプリを再起動します。

Azure CLI をローカル コンピューター上で使用している場合、<zip_file_path> にはお使いのコンピューター上の .zip ファイルへのパスを指定します。 Azure CLI は Azure Cloud Shell 内で実行することもできます。 Cloud Shell を使用する場合は、まず、Cloud Shell に関連付けられた Azure Files アカウントに .zip ファイルをアップロードする必要があります。 その場合は、<zip_file_path> には、Cloud Shell アカウントで使用している保存場所を指定します。 詳細については、「Azure Cloud Shell でファイルを永続化する」をご覧ください。

REST API を使って ZIP ファイルを展開する

展開サービス REST API を使って、.zip ファイルを Azure 内のアプリに展開できます。 デプロイするには、POST 要求を https://<app_name>.scm.azurewebsites.net/api/zipdeploy に送信します。 POST 要求のメッセージの本文に .zip ファイルを含める必要があります。 アプリの展開資格情報は、HTTP 基本認証を使って要求で提供します。 詳しくは、.zip のプッシュ展開に関するページをご覧ください。

HTTP BASIC 認証では、App Service 展開資格情報が必要です。 自分の展開資格情報を設定する方法については、「ユーザー レベルの資格情報の設定とリセット」を参照してください。

cURL を使用する

次の例は cURL ツールを使用して .zip ファイルを展開します。 プレースホルダー <deployment_user>、<zip_file_path>、<app_name> を置き換えます。 cURL によって要求されたら、パスワードを入力します。

curl -X POST -u <deployment_user> --data-binary "@<zip_file_path>" https://<app_name>.scm.azurewebsites.net/api/zipdeploy

この要求により、アップロードされた .zip ファイルからのプッシュ展開がトリガーされます。 次の cURL の例で示すように、https://<app_name>.scm.azurewebsites.net/api/deployments エンドポイントを使うことにより、現在および過去の展開を確認できます。 やはり、<app_name> はアプリの名前に置き換え、<deployment_user> は展開資格情報のユーザー名に置き換えます。

curl -u <deployment_user> https://<app_name>.scm.azurewebsites.net/api/deployments

非同期 zip デプロイ

同期的にデプロイするときに、接続タイムアウトに関連するエラーが発生する可能性があります。 ?isAsync=true を URL に追加して、非同期的にデプロイします。 zip ファイルがアップロードされるとすぐに、ポーリング可能なデプロイ状態の URL を示す Location ヘッダーがあなたに応答を返します。 Location ヘッダーで指定された URL をポーリングすると、プロセスの進行中に HTTP 202 (Accepted) 応答が返され、アーカイブが展開されてデプロイが正常に完了すると、HTTP 200 (OK) 応答が返されます。

Microsoft Entra 認証

zip デプロイに HTTP 基本認証を使用する代わりに、Microsoft Entra ID を使用することもできます。 SCM サイトで HTTP BASIC 認証が無効になっている場合は、Microsoft Entra ID が必要になる場合があります。

展開を実行するユーザーまたはサービス プリンシパルの有効な Microsoft Entra アクセス トークンが必要です。 アクセス トークンは、Azure CLI の az account get-access-token コマンドを使用して取得できます。 アクセス トークンは、HTTP POST 要求の認証ヘッダーで使用されます。

curl -X POST \
    --data-binary "@<zip_file_path>" \
    -H "Authorization: Bearer <access_token>" \
    "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"

PowerShell の場合

次の例では、Publish-AzWebapp を使用して .zip ファイルをアップロードします。 プレースホルダー <group-name>、<app-name>、<zip-file-path> を置き換えます。

Publish-AzWebapp -ResourceGroupName <group-name> -Name <app-name> -ArchivePath <zip-file-path>

この要求により、アップロードされた .zip ファイルからのプッシュ展開がトリガーされます。

現在と過去の展開を確認するには、次のコマンドを実行します。 ここでも、<deployment-user>、<deployment-password>、および <app-name> の各プレースホルダーを置き換えます。

$username = "<deployment-user>"
$password = "<deployment-password>"
$apiUrl = "https://<app-name>.scm.azurewebsites.net/api/deployments"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET

BicepまたはAzure Resource Managerテンプレートを使ってデプロイしてください

BicepやAzure Resource Manager(ARM)テンプレートのデプロイの一部として、Flex Consumption アプリにパッケージをデプロイできます。 /onedeploy拡張を使用し、packageUriプロパティでリモートパッケージURLを提供するMicrosoft.Web/sites/extensionsリソースを定義します。

パッケージファイル名は released-package.zip。 FunctionsホストはリモートパッケージURLとデプロイメントストレージコンテナの両方にアクセスできなければなりません。 パッケージをデプロイコンテナに直接アップロードしてもデプロイにはなりません。

Bicep および ARM テンプレートの例については、Flex Consumption のデプロイ パッケージを定義するを参照してください。

Azure Resource Manager テンプレートを使ってデプロイ

Azure Resource Manager(ARM)テンプレートのZipDeploy拡張機能を使って、.zip ファイルを関数アプリにプッシュできます。

ZipDeploy ARMテンプレートの例

このテンプレートには、運用スロットとステージング スロットの両方が含まれており、いずれか一方にデプロイされます。 通常、このテンプレートを使ってステージングスロットにデプロイし、その後新しいzipパッケージを本番スロットで動かします。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServiceName": {
      "type": "string"
    },
    "deployToProduction": {
      "type": "bool",
      "defaultValue": false
    },
    "slot": {
      "type": "string",
      "defaultValue": "staging"
    },
    "packageUri": {
      "type": "secureString"
    }
  },
  "resources": [
    {
      "condition": "[parameters('deployToProduction')]",
      "type": "Microsoft.Web/sites/extensions",
      "apiVersion": "2021-02-01",
      "name": "[format('{0}/ZipDeploy', parameters('appServiceName'))]",
      "properties": {
        "packageUri": "[parameters('packageUri')]",
        "appOffline": true
      }
    },
    {
      "condition": "[not(parameters('deployToProduction'))]",
      "type": "Microsoft.Web/sites/slots/extensions",
      "apiVersion": "2021-02-01",
      "name": "[format('{0}/{1}/ZipDeploy', parameters('appServiceName'), parameters('slot'))]",
      "properties": {
        "packageUri": "[parameters('packageUri')]",
        "appOffline": true
      }
    }
  ]
}

初期展開では、直接本番スロットにデプロイします。 詳細については、「 Slot deployments (スロットのデプロイ)」を参照してください。

展開パッケージから関数を実行する

デプロイメントパッケージから直接実行すると、 wwwroot ディレクトリへのファイルのコピーを省略できます。 代わりに、Functionsランタイムはパッケージを読み取り専用の wwwroot ディレクトリとしてマウントします。 この方法の特徴は次のとおりです。

  • ファイルのコピーロック問題が軽減されます。
  • アプリで実行されるファイルを検証します。
  • Azure Resource Manager 部署のパフォーマンスを向上させます。
  • 特に大規模なnpmパッケージツリーを持つJavaScriptアプリではコールドスタート時間を短縮できます。

Flex Consumption パッケージの構成

Flex Consumptionアプリはデフォルトでパッケージから動作します。 WEBSITE_RUN_FROM_PACKAGEアプリ設定を追加しないでください。 ストレージコンテナとその認証方法を含むデプロイ設定は、関数アプリのリソースのプロパティです。 詳しくは、「デプロイ」を参照してください。

プレミアムおよび専用パッケージ構成

WEBSITE_RUN_FROM_PACKAGEを1に設定して、ローカルにデプロイされたパッケージから直接実行させてください。 ランタイムはパッケージを Windows のc:\home\data\SitePackagesフォルダに、Linux では/home/data/SitePackagesフォルダに保存します。

消費パッケージの構成

サポートされている WEBSITE_RUN_FROM_PACKAGE 値はオペレーティングシステムによって異なります:

オペレーティング システム 価値 Behavior
Windows 1 アプリは c:\home\data\SitePackages フォルダ内のパッケージから動作します。
リナックス <URL> アプリは指定されたURLのパッケージから動作します。 管理されたIDを使ってアクセスするプライベートなAzure Blob Storageコンテナを使いましょう。

重要

従量課金プランで Linux で 有効期間終了 v3 ランタイム を実行している関数アプリは、2026 年 9 月 30 日以降も実行を停止します。 サービスの中断を回避するには、 アプリを v4 ランタイムに移行します。

従量課金プランで Linux で関数アプリをホストするオプションは、2028 年 9 月 30 日に廃止されます。 Linux 従量課金プランでは、新しい機能や 言語バージョンは取得されません。 従量課金プランのWindowsで実行されているアプリは、現在影響を受けません。 提供終了日より前に、アプリを Flex 従量課金プランに移行します。

パッケージ展開の考慮事項

関数アプリをパッケージからデプロイし実行する際には、以下の要件と制限を念頭に置いてください:

  • パッケージは .zip フォーマットを使用しなければなりません。 tar と gzip 形式はサポートされていません。
  • 最大パッケージサイズは1GBです。 デプロイメントはプロジェクトファイルを解凍する際に一時的なストレージを使用するため、アプリにも十分な一時的なストレージが必要です。 消費プランは 1プランあたり500MBの一時的なストレージを提供します。
  • パッケージから実行すると、wwwroot内のファイルは読み取り専用で、Azureポータルも含まれます。
  • パッケージから実行しているときにローカルキャッシュを使うことはできません。
  • リモートビルドをリクエストするときに WEBSITE_RUN_FROM_PACKAGE 設定しないでください。 代わりに、 SCM_DO_BUILD_DURING_DEPLOYMENT=trueを決めてください。 Linuxでは、 ENABLE_ORYX_BUILD=trueも設定してください。
  • WEBSITE_RUN_FROM_PACKAGE MSDeployでは動作しません。 代わりにzipデプロイメントを使いましょう。

WEBSITE_RUN_FROM_PACKAGE 設定の追加

関数アプリの設定は、いくつかの方法で追加、更新、削除できます。

関数アプリの設定に変更を加えるためには、関数アプリを再起動する必要があります。

zipデプロイメントでアップロードされたパッケージから実行

パッケージを展開する前に WEBSITE_RUN_FROM_PACKAGE を 1 に設定してください。 zipデプロイメントAPIは、パッケージを内容をwwwrootに抽出するのではなく、SitePackagesフォルダにコピーします。 また、展開時にはマウントするパッケージを識別する packagename.txt ファイルも作成されます。 アプリが再起動した後、パッケージは読み取り専用の wwwroot ディレクトリとしてマウントされます。 Linuxの利用アプリはこの設定値をサポートしておらず、外部 パッケージのURLから実行しなければなりません。

デプロイメントが再起動すると、現在実行中の関数実行は終了します。 再起動を安全に扱う関数の記述については、「 function to be stateless(関数をステートレスにする)」を参照してください。

外部パッケージURLから実行

自分でパッケージストレージを管理する必要がある場合は、外部パッケージURLを使いましょう。 このオプションは、Linux Consumption アプリでローカルにビルドされたパッケージを実行するために必要です。 Flex Consumptionではサポートされていません。

Note

外部パッケージURLから WEBSITE_RUN_FROM_PACKAGE=1 を実行する既存の関数アプリを変更することはできません。 外部パッケージURLを使用するには、新しい関数アプリを作成し、 WEBSITE_RUN_FROM_PACKAGE をパッケージURLに設定してください。

プライベートなBlob Storageコンテナを使用し、関数アプリの管理IDにパッケージへのアクセス権を付与します。 管理型IDを使いましょう。SASトークンは期限切れになり、メンテナンスが必要なので。 更新されたパッケージを公開するたびに、 トリガーを手動で同期しなければなりません。 URLを変えずにパッケージをその場で更新する場合は、同期トリガーを出す前に関数アプリを再起動してください。

パッケージを手動でAzure Blob Storageにアップロードしてください

  1. .zip デプロイメントパッケージを作成しましょう。

  2. Azure ポータルで、ストレージ アカウントに移動します。

  3. データストレージの中で「コンテナ」を選択し、プライベートコンテナを作成または選択します。

  4. 荷物をコンテナにアップロードしてください。

  5. アップロードしたブロブを選択し、そのURLをコピーします。 管理型IDを使わない場合は、代わりにSASのURLを生成してください。

  6. 機能アプリで設定を展開し、環境変数を選択し、アプリ設定タブで「追加」を選びます。

  7. WEBSITE_RUN_FROM_PACKAGEという設定を追加し、その値としてパッケージURLを付けます。

  8. 変更を適用し、アプリを再起動し、 トリガーを手動で同期させます。

マネージド ID を使用して Azure Blob Storage からパッケージを取得する

Microsoft Entra IDを使用して要求を<>認証するようにAzure Blob Storageを構成できます。 この構成とは、有効期限がある SAS キーを生成する代わりに、アプリケーションのマネージド ID を使用することです。

既定では、アプリのシステム割り当て ID が使用されます。 ユーザー割り当て ID を指定する場合は、WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID アプリ設定をその ID のリソース ID に設定できます。 この設定では SystemAssigned を値として受け入れることもできます。これは、設定を省略することと同じです。

ID を使用してパッケージをフェッチできるようにするには、次のようにします。

  1. Blob がプライベート アクセス用に構成されていることを確認します。

  2. ID に、パッケージ blob に対するスコープを持つ Storage Blob データリーダー ロールを付与します。 ロールの割り当ての作成の詳細については、「 BLOB データにアクセスするためのAzure ロールの割り当てを参照してください。

  3. WEBSITE_RUN_FROM_PACKAGE アプリケーション設定をパッケージの BLOB URL に設定します。 この URL は通常、https://<storage-account-name>.blob.core.windows.net/<container-name>/<path-to-package> または同様の形式です。

  4. ユーザー割り当て ID を指定する場合は、WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID アプリ設定をその ID のリソース ID に設定できます。 この設定は 、値として SystemAssigned を受け入れることもできますが、これは設定を完全に省略した場合と同じです。 リソース ID は、Azure内のリソースの標準的な表現です。 ユーザー割り当てマネージド ID の場合、/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-nameになります。 ユーザー割り当てマネージド ID のリソース ID は、ユーザー割り当てマネージド ID の Settings>Properties>ID で取得できます。

展開のカスタマイズ

展開プロセスでは、プッシュする .zip ファイルにはすぐに実行できる状態のアプリが含まれるものと想定されています。 既定では、カスタマイズは実行されません。 継続的インテグレーションで取得するものと同じビルド プロセスを有効にするには、アプリケーションの設定に以下を追加します。

SCM_DO_BUILD_DURING_DEPLOYMENT=true

.zip プッシュ展開を使うときのこの設定の既定値は false です。 継続的インテグレーション展開の場合の既定値は true です。 true に設定すると、展開の間にユーザーの展開関連の設定が使われます。 これらの設定は、アプリ設定として、または .zip ファイルのルートに存在する .deployment 構成ファイルで、構成できます。 詳しくは、展開リファレンスの「Repository and deployment-related settings」(リポジトリと展開関連の設定) をご覧ください。

関数アプリ ファイルをダウンロードする

もしアプリが現在実行している正確なパッケージが必要なら、アプリケーションのデプロイメント用に設定されたBlob Storageコンテナからダウンロードしてください:

  1. Azureポータルの関数アプリのページで、設定を展開し、「デプロイメント設定」を選択してください。

  2. アプリケーションパッケージの場所の下に、展開に使用されるストレージアカウントとコンテナを確認しましょう。

  3. そのストレージアカウントにアクセスし、 データストレージを展開し、「 コンテナ」を選択してください。

  4. デプロイメントコンテナを選択し、現在のパッケージを選択し、ダウンロードを選択します。

ダウンロードしたパッケージには、あなたがデプロイしたビルドされたアプリコンテンツが含まれており、これは元のプロジェクトとは異なる場合があります。 各デプロイメントは現在のパッケージを上書きし、デプロイコンテナはデプロイ履歴を提供しません。

CI/CDでデプロイされたアプリについては、ソースプロジェクトをソース管理に残し、リリース保持ポリシーに従ってすぐに実行可能なビルドアーティファクトを保持してください。 特定のリリースを再デプロイするために保持されたアーティファクトを使いましょう。 デプロイコンテナ内のパッケージは、アプリが現在動作している正確なパッケージが必要な場合や、元のアーティファクトが使えなくなった場合に使います。

関数アプリ ファイルをダウンロードする

Azure portal のエディターを使用して関数を作成した場合は、次のいずれかの方法で、既存の関数アプリ プロジェクトを .zip ファイルとしてダウンロードできます。

  1. Azure Portal にサインインし、関数アプリに移動します。

  2. [概要] タブで、 [アプリのコンテンツのダウンロード] を選択します。 ダウンロード オプションを選択し、 [ダウンロード] を選択します。

関数アプリ プロジェクトをダウンロードするための Azure portal ページを示すスクリーンショット。

ダウンロードした .zip ファイルは、.zip プッシュ デプロイを使用して関数アプリに再発行するための適切な形式になっています。 ポータルのダウンロードでは、Visual Studio で関数アプリを直接開くために必要なファイルを追加することもできます。

CI/CDでデプロイされたアプリについては、ソースプロジェクトをソース管理に残し、リリース保持ポリシーに従ってすぐに実行可能なビルドアーティファクトを保持してください。 リポジトリからダウンロードされたソースアーカイブはデプロイメントパッケージではありません。 デプロイワークフローを使ってプロジェクトを構築し展開してください。