Azure Functions のデプロイ テクノロジDeployment technologies in Azure Functions

各種のテクノロジを使用して、Azure Functions プロジェクト コードを Azure にデプロイすることができます。You can use a few different technologies to deploy your Azure Functions project code to Azure. この記事では、これらのテクノロジの包括的な一覧を提供し、どのテクノロジをどの種類の関数に対して使用できるかを説明し、各手法を使用するとどのようなことが起こるかについて説明し、各種シナリオで使用する最適な手法についてレコメンデーションを提示します。This article provides an exhaustive list of those technologies, describes which technologies are available for which flavors of Functions, explains what happens when you use each method, and provides recommendations for the best method to use in various scenarios. Azure Functions へのデプロイをサポートする各種ツールは、それらのコンテキストに基づいて適切なテクノロジとなるように調整されています。The various tools that support deploying to Azure Functions are tuned to the right technology based on their context. 一般に、Azure Functions で推奨されるデプロイ テクノロジは zip デプロイです。In general, zip deployment is the recommended deployment technology for Azure Functions.

デプロイ テクノロジの利用可否Deployment technology availability

Azure Functions は、クロス プラットフォームのローカル開発と、Windows と Linux でのホスティングをサポートしています。Azure Functions supports cross-platform local development and hosting on Windows and Linux. 現時点では、次の 3 つのホスティング プランを利用できます。Currently, three hosting plans are available:

各プランの動作は異なります。Each plan has different behaviors. 各種の Azure Functions に対してすべてのデプロイ テクノロジが使用できるわけではありません。Not all deployment technologies are available for each flavor of Azure Functions. 次の表は、オペレーティング システムとホスティング プランの各組み合わせでサポートされるデプロイ テクノロジを示しています。The following chart shows which deployment technologies are supported for each combination of operating system and hosting plan:

デプロイ テクノロジDeployment technology Windows ConsumptionWindows Consumption Windows PremiumWindows Premium Windows DedicatedWindows Dedicated Linux ConsumptionLinux Consumption Linux PremiumLinux Premium Linux DedicatedLinux Dedicated
外部パッケージ URL1External package URL1
ZIP デプロイZip deploy
Docker コンテナーDocker container
Web デプロイWeb Deploy
ソース管理Source control
ローカル Git1Local Git1
クラウドの同期1Cloud sync1
FTP1FTP1
ポータルでの編集Portal editing 22 22

1 トリガーの手動同期が必要なデプロイ テクノロジ。1 Deployment technology that requires manual trigger syncing.
2 ポータルでの編集は、Premium プランと専用プランを使用する Linux 上の Functions の HTTP トリガーとタイマー トリガーに対してのみ使用できます。2 Portal editing is enabled only for HTTP and Timer triggers for Functions on Linux using Premium and dedicated plans.

主要な概念Key concepts

Azure Functions でのデプロイの動作を理解するために重要な概念がいくつかあります。Some key concepts are critical to understanding how deployments work in Azure Functions.

トリガーの同期Trigger syncing

トリガーのいずれかを変更する場合、Functions インフラストラクチャにその変更を認識させる必要があります。When you change any of your triggers, the Functions infrastructure must be aware of the changes. 同期は、多くのデプロイ テクノロジでは自動的に実行されます。Synchronization happens automatically for many deployment technologies. ただし、場合によっては、トリガーを手動で同期する必要があります。However, in some cases, you must manually sync your triggers. 外部パッケージ URL、ローカル Git、クラウドの同期、または FTP を参照することで更新をデプロイする場合は、トリガーを手動で同期する必要があります。When you deploy your updates by referencing an external package URL, local Git, cloud sync, or FTP, you must manually sync your triggers. 次の 3 つの方法のいずれかでトリガーを同期できます。You can sync triggers in one of three ways:

  • Azure portal で関数アプリを再起動する。Restart your function app in the Azure portal
  • マスター キーを使用して HTTP POST 要求を https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> に送信する。Send an HTTP POST request to https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> using the master key.
  • HTTP POST 要求を https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01 に送信する。Send an HTTP POST request to https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. プレースホルダーは、ご使用のサブスクリプション ID、リソース グループ名、および関数アプリの名前に置き換えてください。Replace the placeholders with your subscription ID, resource group name, and the name of your function app.

リモート ビルドRemote build

Azure Functions では、zip デプロイ後に受け取ったコードのビルドを自動的に実行できます。Azure Functions can automatically perform builds on the code it receives after zip deployments. これらのビルドの動作は、アプリが Windows と Linux のどちらで実行されているかによって若干異なります。These builds behave slightly differently depending on whether your app is running on Windows or Linux. アプリがパッケージから実行モードに設定されている場合、リモート ビルドは実行されません。Remote builds are not performed when an app has previously been set to run in Run From Package mode. リモート ビルドの使用方法については、「zip デプロイ」を参照してください。To learn how to use remote build, navigate to zip deploy.

注意

リモート ビルドで問題が発生している場合は、この機能が利用可能になった日 (2019 年8月1日) より前にアプリが作成されている可能性があります。If you're having issues with remote build, it might be because your app was created before the feature was made available (August 1, 2019). 新しい関数アプリを作成するか、az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> を実行して関数アプリを更新してみてください。Try creating a new function app, or running az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> to update your function app. このコマンドを正常に実行するには、2 回試行することが必要な場合があります。This command might take two tries to succeed.

Windows でのリモート ビルドRemote build on Windows

Windows 上で実行されるすべての関数アプリには、小規模な管理アプリ (SCM (または Kudu) サイト) があります。All function apps running on Windows have a small management app, the SCM (or Kudu) site. このサイトで、Azure Functions のデプロイとビルドのロジックの多くが処理されます。This site handles much of the deployment and build logic for Azure Functions.

アプリが Windows にデプロイされると、dotnet restore (C#) や npm install (JavaScript) などの言語固有のコマンドが実行されます。When an app is deployed to Windows, language-specific commands, like dotnet restore (C#) or npm install (JavaScript) are run.

Linux でのリモート ビルドRemote build on Linux

Linux でリモート ビルドを有効にするには、次のアプリケーション設定を行う必要があります。To enable remote build on Linux, the following application settings must be set:

  • ENABLE_ORYX_BUILD=true
  • SCM_DO_BUILD_DURING_DEPLOYMENT=true

既定では、Azure Functions Core ToolsVisual Studio Code 用の Azure Functions 拡張機能の両方で、Linux へのデプロイ時にリモート ビルドが実行されます。By default, both Azure Functions Core Tools and the Azure Functions Extension for Visual Studio Code perform remote builds when deploying to Linux. このため、どちらのツールでも、これらの設定は Azure で自動的に作成されます。Because of this, both tools automatically create these settings for you in Azure.

Linux 上でリモートでビルドされたアプリは、デプロイ パッケージから実行されますWhen apps are built remotely on Linux, they run from the deployment package.

従量課金プランConsumption plan

従量課金プランで実行されている Linux 関数アプリには SCM/Kudu サイトがありません。これにより、デプロイ オプションが制限されます。Linux function apps running in the Consumption plan don't have an SCM/Kudu site, which limits the deployment options. ただし、従量課金プランで実行されている Linux 上の関数アプリでは、リモート ビルドがサポートされます。However, function apps on Linux running in the Consumption plan do support remote builds.

専用プランと Premium プランDedicated and Premium plans

専用 (App Service) プランPremium プランで実行されている Linux 上の関数アプリには、制限された SCM/Kudu サイトがあります。Function apps running on Linux in the Dedicated (App Service) plan and the Premium plan also have a limited SCM/Kudu site.

デプロイ テクノロジの詳細Deployment technology details

Azure Functions では、次のデプロイ方法が使用できます。The following deployment methods are available in Azure Functions.

外部パッケージ URLExternal package URL

外部パッケージ URL を使用して、関数アプリが含まれるリモート パッケージ (.zip) ファイルを参照できます。You can use an external package URL to reference a remote package (.zip) file that contains your function app. このファイルは、指定の URL からダウンロードされます。アプリは Run From Package モードで実行されます。The file is downloaded from the provided URL, and the app runs in Run From Package mode.

使用方法: アプリケーションの設定に WEBSITE_RUN_FROM_PACKAGE を追加します。How to use it: Add WEBSITE_RUN_FROM_PACKAGE to your application settings. この設定では、値として URL (実行する特定のパッケージ ファイルの場所) を指定する必要があります。The value of this setting should be a URL (the location of the specific package file you want to run). ポータルで、または Azure CLI を使用して設定を追加できます。You can add settings either in the portal or by using the Azure CLI.

Azure Blob Storage を使用する場合は、Shared Access Signature (SAS) を備えたプライベート コンテナーを使用して、Functions にパッケージへのアクセス権を付与します。If you use Azure Blob storage, use a private container with a shared access signature (SAS) to give Functions access to the package. アプリケーションが再起動されるたびに、コンテンツのコピーがフェッチされます。Any time the application restarts, it fetches a copy of the content. アプリケーションの有効期間中は、参照が有効である必要があります。Your reference must be valid for the lifetime of the application.

いつ使用するか: ユーザーがリモート ビルドの発生を望まない場合、従量課金プランの Linux 上で実行される Azure Functions でサポートされるデプロイ方法は、外部パッケージ URL のみになります。When to use it: External package URL is the only supported deployment method for Azure Functions running on Linux in the Consumption plan, if the user doesn't want a remote build to occur. 関数アプリが参照しているパッケージ ファイルを更新する場合、Azure にアプリケーションが変更されたことを通知するために、トリガーを手動で同期する必要があります。When you update the package file that a function app references, you must manually sync triggers to tell Azure that your application has changed.

ZIP デプロイZip deploy

ZIP デプロイを使用して、関数アプリが含まれる ZIP ファイルを Azure にプッシュします。Use zip deploy to push a .zip file that contains your function app to Azure. 必要に応じて、パッケージから実行を開始するようにアプリを設定するか、リモート ビルドを実行するように指定することができます。Optionally, you can set your app to start running from package, or specify that a remote build occurs.

使用方法: 次のお気に入りのクライアント ツールを使用してデプロイします。Visual Studio CodeVisual StudioAzure Functions Core Tools、または Azure CLIHow to use it: Deploy by using your favorite client tool: Visual Studio Code, Visual Studio, the Azure Functions Core Tools, or the Azure CLI. 既定では、これらのツールは zip デプロイを使用し、パッケージから実行されます。By default, these tools use zip deployment and run from package. Core Tools と Visual Studio Code 拡張機能の両方で、Linux へのデプロイ時にリモート ビルドが有効になります。Core Tools and the Visual Studio Code extension both enable remote build when deploying to Linux. .zip ファイルを関数アプリに手動でデプロイするには、.zip ファイルまたは URL からのデプロイに関する記事の指示に従います。To manually deploy a .zip file to your function app, follow the instructions in Deploy from a .zip file or URL.

zip デプロイを使用してデプロイする場合は、パッケージから実行 するようにアプリを設定できます。When you deploy by using zip deploy, you can set your app to run from package. パッケージから実行するには、WEBSITE_RUN_FROM_PACKAGE アプリケーション設定の値を 1 に設定します。To run from package, set the WEBSITE_RUN_FROM_PACKAGE application setting value to 1. ZIP デプロイをお勧めします。We recommend zip deployment. これによりアプリケーションの読み込み時間が短縮されます。これは VS Code、Visual Studio、および Azure CLI の既定値になります。It yields faster loading times for your applications, and it's the default for VS Code, Visual Studio, and the Azure CLI.

いつ使用するか: zip デプロイは、Azure Functions で推奨されるデプロイ テクノロジです。When to use it: Zip deploy is the recommended deployment technology for Azure Functions.

Docker コンテナーDocker container

関数アプリが含まれる Linux コンテナー イメージをデプロイできます。You can deploy a Linux container image that contains your function app.

使用方法: Premium プランまたは専用プランで Linux 関数アプリを作成し、実行元のコンテナー イメージを指定します。How to use it: Create a Linux function app in the Premium or Dedicated plan and specify which container image to run from. 次の 2 つの方法で行います。You can do this in two ways:

  • Azure portal を使用して、Azure App Service プランで Linux 関数アプリを作成します。Create a Linux function app on an Azure App Service plan in the Azure portal. [発行] で、 [Docker イメージ] を選択し、コンテナーを構成します。For Publish, select Docker Image, and then configure the container. イメージがホストされている場所を入力します。Enter the location where the image is hosted.
  • Azure CLI を使用して、App Service プランで Linux 関数アプリを作成します。Create a Linux function app on an App Service plan by using the Azure CLI. 作成方法については、「カスタム イメージを使用して Linux で関数を作成する」をご覧ください。To learn how, see Create a function on Linux by using a custom image.

カスタム コンテナーを使用して既存のアプリにデプロイするには、Azure Functions Core Toolsfunc deploy コマンドを使用します。To deploy to an existing app by using a custom container, in Azure Functions Core Tools, use the func deploy command.

いつ使用するか: Docker コンテナー オプションは、関数アプリが実行される Linux 環境をより詳細に制御する必要がある場合に使用します。When to use it: Use the Docker container option when you need more control over the Linux environment where your function app runs. このデプロイ メカニズムは、Linux 上で実行されている Functions に対してのみ使用できます。This deployment mechanism is available only for Functions running on Linux.

Web デプロイ (MSDeploy)Web Deploy (MSDeploy)

Web デプロイは、Azure の Windows で実行される関数アプリを含む Windows アプリケーションをパッケージ化し、IIS サーバーにデプロイします。Web Deploy packages and deploys your Windows applications to any IIS server, including your function apps running on Windows in Azure.

使用方法: Visual Studio Tools for Azure Functions を使用します。How to use it: Use Visual Studio tools for Azure Functions. [パッケージ ファイルから実行します (推奨)] チェック ボックスをオフにします。Clear the Run from package file (recommended) check box.

また、Web Deploy 3.6 をダウンロードし、MSDeploy.exe を直接呼び出すこともできます。You can also download Web Deploy 3.6 and call MSDeploy.exe directly.

いつ使用するか: Web デプロイはサポートされており、問題はありませんが、推奨されているメカニズムは、[パッケージから実行する] が有効化された ZIP デプロイです。When to use it: Web Deploy is supported and has no issues, but the preferred mechanism is zip deploy with Run From Package enabled. 詳細については、Visual Studio デプロイ ガイドに関する記事をご覧ください。To learn more, see the Visual Studio development guide.

ソース管理Source control

ソース管理を使用して、関数アプリを Git リポジトリに接続します。Use source control to connect your function app to a Git repository. そのリポジトリ内のコードへの更新が、デプロイをトリガーします。An update to code in that repository triggers deployment. 詳細については、「Kudu Wiki」をご覧ください。For more information, see the Kudu Wiki.

使用方法: ポータルの Functions 領域でデプロイ センターを使用して、ソース管理からのパブリッシュを設定します。How to use it: Use Deployment Center in the Functions area of the portal to set up publishing from source control. 詳細については、「Azure Functions の継続的なデプロイ」を参照してください。For more information, see Continuous deployment for Azure Functions.

いつ使用するか: 関数アプリで共同作業を行うチームにとっては、ソース管理を使用することがベスト プラクティスです。When to use it: Using source control is the best practice for teams that collaborate on their function apps. ソース管理は、より高度なデプロイ パイプラインを可能にする優れたデプロイ オプションです。Source control is a good deployment option that enables more sophisticated deployment pipelines.

ローカル GitLocal Git

ローカル Git は、Git を使用して、ローカル コンピューターから Azure Functions にコードをプッシュするのに使用できます。You can use local Git to push code from your local machine to Azure Functions by using Git.

使用方法:Azure App Service へのローカル Git デプロイ」の指示に従ってください。How to use it: Follow the instructions in Local Git deployment to Azure App Service.

いつ使用するか: 一般に、別のデプロイ方法を使用することをお勧めします。When to use it: In general, we recommend that you use a different deployment method. ローカル Git からパブリッシュする場合、トリガーを手動で同期する必要があります。When you publish from local Git, you must manually sync triggers.

クラウドの同期Cloud sync

Dropbox および OneDrive から Azure Functions にコンテンツを同期するには、クラウドの同期を使用します。Use cloud sync to sync your content from Dropbox and OneDrive to Azure Functions.

使用方法:クラウド フォルダーからのコンテンツを同期する」の指示に従ってください。How to use it: Follow the instructions in Sync content from a cloud folder.

いつ使用するか: 一般に、他のデプロイ方法をお勧めします。When to use it: In general, we recommend other deployment methods. クラウドの同期を使用してパブリッシュする場合、トリガーを手動で同期する必要があります。When you publish by using cloud sync, you must manually sync triggers.

FTPFTP

FTP を使用して、ファイルを Azure Functions に直接転送できます。You can use FTP to directly transfer files to Azure Functions.

使用方法: FTP/S を使用したコンテンツのデプロイの指示に従います。How to use it: Follow the instructions in Deploy content by using FTP/s.

いつ使用するか: 一般に、他のデプロイ方法をお勧めします。When to use it: In general, we recommend other deployment methods. FTP を使用してパブリッシュする場合、トリガーを手動で同期する必要があります。When you publish by using FTP, you must manually sync triggers.

ポータルでの編集Portal editing

ポータルベースのエディターでは、関数アプリ内のファイルを直接編集できます (基本的には、変更内容を保存するたびにデプロイされます)。In the portal-based editor, you can directly edit the files that are in your function app (essentially deploying every time you save your changes).

使用方法: Azure portal で関数を編集できるようにするために、ポータルで関数を作成しておく必要があります。How to use it: To be able to edit your functions in the Azure portal, you must have created your functions in the portal. 単一の信頼できるソースを保持するため、他のデプロイ方法を使用して、関数を読み取り専用にし、ポータルで編集できないようにします。To preserve a single source of truth, using any other deployment method makes your function read-only and prevents continued portal editing. Azure portal でファイルを編集できる状態に戻すには、編集モードを Read/Write に手動で戻し、デプロイ関連のアプリケーション設定 (WEBSITE_RUN_FROM_PACKAGE など) をすべて削除します。To return to a state in which you can edit your files in the Azure portal, you can manually turn the edit mode back to Read/Write and remove any deployment-related application settings (like WEBSITE_RUN_FROM_PACKAGE).

いつ使用するか: Azure Functions の使用を開始するには、ポータルが適しています。When to use it: The portal is a good way to get started with Azure Functions. より集中的な開発作業には、次のクライアント ツールのいずれかを使用することをお勧めします。For more intense development work, we recommend that you use one of the following client tools:

次の表に、ポータルでの編集をサポートしているオペレーティング システムと言語を示します。The following table shows the operating systems and languages that support portal editing:

Windows ConsumptionWindows Consumption Windows PremiumWindows Premium Windows DedicatedWindows Dedicated Linux ConsumptionLinux Consumption Linux PremiumLinux Premium Linux DedicatedLinux Dedicated
C#C#
C# スクリプトC# Script ** **
F#F#
JavaJava
JavaScript (Node.js)JavaScript (Node.js)JavaScript (Node.js) ** **
Python (プレビュー)Python (Preview)
PowerShell (プレビュー)PowerShell (Preview)
TypeScript (Node.js)TypeScript (Node.js)

* ポータルでの編集は、Premium プランと専用プランを使用する Linux 上の Functions の HTTP トリガーとタイマー トリガーに対してのみ使用できます。* Portal editing is enabled only for HTTP and Timer triggers for Functions on Linux using Premium and dedicated plans.

デプロイ スロットDeployment slots

関数アプリを Azure にデプロイする場合、運用環境に直接デプロイする代わりに、個別のデプロイ スロットにデプロイできます。When you deploy your function app to Azure, you can deploy to a separate deployment slot instead of directly to production. デプロイ スロットの詳細については、Azure Functions のデプロイ スロットのドキュメントをご覧ください。For more information on deployment slots, see the Azure Functions Deployment Slots documentation for details.

次の手順Next steps

関数アプリのデプロイの詳細については、次の記事を参照してください。Read these articles to learn more about deploying your function apps: