Azure Functions ランタイム バージョンの概要Azure Functions runtime versions overview

Azure Functions Runtime には、2 つのメジャー バージョン 1.x と 2.x があります。There are two major versions of the Azure Functions runtime: 1.x and 2.x. 新機能が動作し、機能強化が行われている現在のバージョンは 2.x ですが、どちらも運用シナリオに対してサポートされています。The current version where new feature work and improvements are being made is 2.x, though both are supported for production scenarios. 以下では、2 つのバージョンの違い、各バージョンを作成する方法、および 1.x から 2.x にアップグレードする方法について詳しく説明します。The following details some of the differences between the two, how you can create each version, and upgrade from 1.x to 2.x.

注意

この記事は、クラウド サービスの Azure Functions に関するものです。This article refers to the cloud service Azure Functions. オンプレミスで Azure Functions を実行できるプレビュー製品については、「Azure Functions Runtime の概要 (プレビュー)」をご覧ください。For information about the preview product that lets you run Azure Functions on-premises, see the Azure Functions Runtime Overview.

クロスプラットフォーム開発Cross-platform development

バージョン 2.x のランタイムは .NET Core 2 で実行され、ランタイム 2.x は、macOS や Linux など、.NET Core でサポートされるすべてのプラットフォームで実行できます。The version 2.x runtime runs on .NET Core 2, which enables it to run on all platforms supported by .NET Core, including macOS and Linux. .NET Core 上で実行されることで、クロスプラットフォーム開発とホスティング シナリオが可能になります。Running on .NET Core enables cross-platform development and hosting scenarios.

比較すると、バージョン 1.x のランタイムは、Azure portal または Windows コンピューターでの開発とホスティングのみをサポートしています。By comparison, the version 1.x runtime only supports development and hosting in the Azure portal or on Windows computers.

LanguagesLanguages

バージョン2.x のランタイム では、新しい言語拡張モデルが使用されます。The version 2.x runtime uses a new language extensibility model. バージョン 2.x では、関数アプリ内のすべての関数は同じ言語を共有する必要があります。In version 2.x, all functions in a function app must share the same language. 関数アプリ内の関数の言語は、アプリの作成時に選択されます。The language of functions in a function app is chosen when creating the app.

Azure Functions 1.x の試験段階の言語は、新しいモデルを使用するよう更新されていないため、2.x ではサポートされません。Azure Functions 1.x experimental languages won't be updated to use the new model, so they aren't supported in 2.x. 次の表は、各ランタイム バージョンでどのプログラミング言語が現在サポートされているかを示しています。The following table indicates which programming languages are currently supported in each runtime version.

言語Language 1.x1.x 2.x2.x
C#C# GA (.NET Framework 4.7)GA (.NET Framework 4.7) GA (.NET Core 2)GA (.NET Core 2)
JavaScriptJavaScript GA (Node 6)GA (Node 6) GA (Node 8、10)GA (Node 8 & 10)
F#F# GA (.NET Framework 4.7)GA (.NET Framework 4.7) GA (.NET Core 2)GA (.NET Core 2)
JavaJava 該当なしN/A プレビュー (Java 8)Preview (Java 8)
PythonPython 試験段階Experimental プレビュー (Python 3.6)Preview (Python 3.6)
TypeScriptTypeScript 試験段階Experimental JavaScript へのトランスパイリングによってサポートされますSupported through transpiling to JavaScript
PHPPHP 試験段階Experimental 該当なしN/A
バッチ (.cmd、.bat)Batch (.cmd, .bat) 試験段階Experimental 該当なしN/A
BashBash 試験段階Experimental 該当なしN/A
PowerShellPowerShell 試験段階Experimental 該当なしN/A

言語サポートの計画的な変更については、「Azure ロードマップ」を参照してください。For information about planned changes to language support, see Azure roadmap.

詳細については、サポートされている言語に関するページを参照してください。For more information, see Supported languages.

バージョン 1.x での実行Run on version 1.x

既定では、Azure portal で作成された関数アプリはバージョン 2.x に設定されます。By default, function apps created in the Azure portal are set to version 2.x. 新機能への投資が行われているので、可能であれば、このランタイム バージョンを使用するようにします。When possible, you should use this runtime version, where new feature investments are being made. 必要に応じて、バージョン 1.x ランタイム上で関数アプリを実行することもできます。If you need to, you can still run a function app on the version 1.x runtime. ランタイムのバージョンを変更できるのは、関数アプリを作成してから関数を追加するまでの間のみです。You can only change the runtime version after you create your function app but before you add any functions. ランタイム バージョンを 1.x に固定する方法については、「現在のランタイム バージョンの表示と更新」を参照してください。To learn how to pin the runtime version to 1.x, see View and update the current runtime version.

1.x から 2.x への移行Migrating from 1.x to 2.x

バージョン 2.x ではなくバージョン 1.x のランタイムを使用するように記述された既存のアプリを移行することができます。You may choose to migrate an existing app written to use the version 1.x runtime to instead use version 2.x. 必要な変更の大部分は、.NET Framework 4.7 と .NET Core 2 間の C# API の変更など、言語ランタイムの変更に関連する変更です。Most of the changes you need to make are related to changes in the language runtime, such as C# API changes between .NET Framework 4.7 and .NET Core 2. また、コードとライブラリが、選択した言語ランタイムと互換性があることを確認する必要があります。You'll also need to make sure your code and libraries are compatible with the language runtime you choose. 最後に、以下で示すトリガー、バインド、および機能での変更にも注意してください。Finally, be sure to note any changes in trigger, bindings, and features highlighted below. 最適な移行結果を得るには、バージョン 2.x 用の新しい関数アプリを作成し、既存のバージョン 1.x の関数コードを新しいアプリに移植する必要があります。For the best migration results, you should create a new function app for version 2.x and port your existing version 1.x function code to the new app.

トリガーとバインドでの変更Changes in triggers and bindings

バージョン 2.x では、アプリの関数から使用される特定のトリガーとバインドの拡張機能をインストールする必要があります。Version 2.x requires you to install the extensions for specific triggers and bindings used by the functions in your app. この例外は、拡張機能を必要としない HTTP トリガーとタイマー トリガーのみです。The only exception for this HTTP and timer triggers, which don't require an extension. 詳細については、バインド拡張機能の登録とインストールに関するページを参照してください。For more information, see Register and install binding extensions.

バージョン間には、関数の function.json や属性の変更もいくつかあります。There have also been a few changes in the function.json or attributes of the function between versions. たとえば、イベント ハブの path のプロパティは eventHubName になりました。For example, the Event Hub path property is now eventHubName. 各バインドのドキュメントへのリンクについては、既存のバインド一覧を参照してください。See the existing binding table for links to documentation for each binding.

機能の変更Changes in features and functionality

新しいバージョンでは、いくつかの機能が削除、更新、または置き換えられました。A few features that have also been removed, updated, or replaced in the new version. このセクションでは、バージョン 1.x の後にバージョン 2.x を使用した場合に気づく変更点について詳しく説明します。This section details the changes you see in version 2.x after having used version 1.x.

バージョン 2.x では次の点が変更されました。In version 2.x, the following changes were made:

  • HTTP エンドポイントを呼び出すキーは、Azure Blob Storage 内で常に暗号化されて格納されます。Keys for calling HTTP endpoints are always stored encrypted in Azure Blob storage. バージョン 1.x では、既定で Azure Files ストレージにキーが格納されていました。In version 1.x, keys were stored in Azure File storage be default. アプリをバージョン 1.x からバージョン 2.x にアップグレードすると、ファイル ストレージ内の既存のシークレットはリセットされます。When upgrading an app from version 1.x to version 2.x, existing secrets that are in file storage are reset.

  • バージョン 2.x ランタイムには、Webhook プロバイダーの組み込みサポートは含まれていません。The version 2.x runtime doesn't include built-in support for webhook providers. この変更はパフォーマンスを向上するために行われました。This change was made to improve performance. Webhook のエンドポイントとして HTTP トリガーを使用することもできます。You can still use HTTP triggers as endpoints for webhooks.

  • ホスト構成ファイル (host.json) は空か、文字列 "version": "2.0" が含まれる必要があります。The host configuration file (host.json) should be empty or have the string "version": "2.0".

  • 監視を改善するために、AzureWebJobsDashboard 設定を使用したポータルの WebJobs ダッシュボードは、APPINSIGHTS_INSTRUMENTATIONKEY 設定を使用する Azure Application Insights に置き換えられています。To improve monitoring, the WebJobs dashboard in the portal, which used the AzureWebJobsDashboard setting is replaced with Azure Application Insights, which uses the APPINSIGHTS_INSTRUMENTATIONKEY setting. 詳しくは、「Azure Functions を監視する」をご覧ください。For more information, see Monitor Azure Functions.

  • 関数アプリ内のすべての関数は、同じ言語を共有する必要があります。All functions in a function app must share the same language. 関数アプリを作成するときに、そのアプリのランタイム スタックを選択する必要があります。When you create a function app, you must choose a runtime stack for the app. ランタイム スタックは、アプリケーション設定の FUNCTIONS_WORKER_RUNTIME 値によって指定されます。The runtime stack is specified by the FUNCTIONS_WORKER_RUNTIME value in application settings. メモリ占有領域と起動時間を改善するために、この要件が追加されました。This requirement was added to improve footprint and startup time. ローカルで開発する場合は、この設定も local.settings.json ファイル に含める必要があります。When developing locally, you must also include this setting in the local.settings.json file.

  • App Service プランでの関数に対する既定のタイムアウトは 30 分に変更されます。The default timeout for functions in an App Service plan is changed to 30 minutes. host.json の functionTimeout 設定を使用して、手動でタイムアウトを無制限に変更することができます。You can manually change the timeout back to unlimited by using the functionTimeout setting in host.json.

  • 従量課金プラン機能の場合、HTTP 同時実行のスロットルは既定で実装され、インスタンスあたりの既定の同時要求数は 100 です。HTTP concurrency throttles are implemented by default for consumption plan functions, with a default of 100 concurrent requests per instance. これは host.json ファイルの maxConcurrentRequests 設定で変更できます。You can change this in the maxConcurrentRequests setting in the host.json file.

  • .NET Core の制限があるため、F# スクリプト (.fsx) 関数のサポートが削除されました。Because of .NET core limitations, support for F# script (.fsx) functions has been removed. コンパイル済みの F# 関数 (.fs) は引き続きサポートされます。Compiled F# functions (.fs) are still supported.

  • Event Grid トリガー Webhook の URL 形式は https://{app}/runtime/webhooks/{triggerName} に変更されました。The URL format of Event Grid trigger webhooks has been changed to https://{app}/runtime/webhooks/{triggerName}.

ローカルで開発されたアプリケーションの移行Migrating a locally developed application

バージョン 1.x ランタイムを使用してローカルで開発した既存の関数アプリ プロジェクトがあるとします。You may have existing function app projects that you developed locally using the version 1.x runtime. バージョン 2.x にアップグレードするには、バージョン 2.x に対してローカル関数アプリ プロジェクトを作成し、既存のコードを新しいアプリに移植する必要があります。To upgrade to version 2.x, you should create a local function app project against version 2.x and port your existing code into the new app. 既存のプロジェクトとコードを手動で更新することができます。これは一種の "インプレース" アップグレードです。You could manually update the existing project and code, a sort of "in-place" upgrade. ただし、バージョン 1.x とバージョン 2.x 間にはまだ改善の余地がいくつかあります。However, there are a number of other improvements between version 1.x and version 2.x that you may still need to make. たとえば、C# ではデバッグ オブジェクトが TraceWriter から ILogger に変更されました。For example, in C# the debugging object was changed from TraceWriter to ILogger. 最新のバージョン 2.x のテンプレートに基づいて新しいバージョン 2.x プロジェクトを作成することで、更新された関数から始めます。By creating a new version 2.x project, you start off with updated functions based on the latest version 2.x templates.

Visual Studio のランタイム バージョンVisual Studio runtime versions

Visual Studio では、プロジェクトを作成するときにランタイムのバージョンを選択します。In Visual Studio, you select the runtime version when you create a project. Visual Studio 用の Azure Functions ツールは、ランタイムの両メジャー バージョンをサポートしています。Azure Functions tools for Visual Studio supports both major runtime versions. デバッグ時と公開時には、プロジェクトの設定に基づいて正しいバージョンが使用されます。The correct version is used when debugging and publishing based on project settings. バージョン設定は、.csproj ファイルの次のプロパティで定義されています。The version settings are defined in the .csproj file in the following properties:

バージョン 1.xVersion 1.x
<TargetFramework>net461</TargetFramework>
<AzureFunctionsVersion>v1</AzureFunctionsVersion>
バージョン 2.xVersion 2.x
<TargetFramework>netstandard2.0</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>

プロジェクトをデバッグまたは公開すると、正しいバージョンのランタイムが使用されます。When you debug or publish your project, the correct version of the runtime is used.

VS Code と Azure Functions Core ToolsVS Code and Azure Functions Core Tools

Azure Functions Core Tools は、コマンド ラインの開発に使用されます。また、Visual Studio Code 用の Azure Functions 拡張機能からも使用されます。Azure Functions Core Tools is used for command line development and also by the Azure Functions extension for Visual Studio Code. バージョン 2.x に対して開発するには、Core Tools のバージョン 2.x をインストールします。To develop against version 2.x, install version 2.x of the Core Tools. バージョン 1.x の開発には Core Tools のバージョン 1.x が必要です。Version 1.x development requires version 1.x of the Core Tools. 詳細については、「Azure Functions Core Tools のインストール」を参照してください。For more information, see Install the Azure Functions Core Tools.

Visual Studio Code の開発の場合は、必要に応じてインストールされているツールのバージョンと一致するように azureFunctions.projectRuntime のユーザー設定を更新します。For Visual Studio Code development, you may also need to update the user setting for the azureFunctions.projectRuntime to match the version of the tools installed. この設定で、関数アプリの作成時に使用されるテンプレートと言語も更新されます。This setting also updates the templates and languages used during function app creation.

Azure でのアプリのバージョンの変更Changing version of apps in Azure

Azure の公開アプリから使用される Functions ランタイムのバージョンは、FUNCTIONS_EXTENSION_VERSION アプリケーションの設定によって決まります。The version of the Functions runtime used by published apps in Azure is dictated by the FUNCTIONS_EXTENSION_VERSION application setting. ~2 の値はバージョン 2.x のランタイムをターゲットにし、~1 はバージョン 1.x のランタイムをターゲットにしています。A value of ~2 targets the version 2.x runtime and ~1 targets the version 1.x runtime. 他のアプリ設定の変更や関数のコード変更が必要になる可能性があるため、この設定を任意に変更しないでください。Don't arbitrarily change this setting, because other app setting changes and code changes in your functions are likely required. 関数アプリを別のランタイム バージョンに移行する場合に推奨される方法については、「Azure Functions ランタイム バージョンをターゲットにする方法」を参照してください。To learn about the recommended way to migrate your function app to a different runtime version, see How to target Azure Functions runtime versions.

バインドBindings

バージョン 2.x のランタイムで使用される新しいバインド拡張モデルの利点は、次のとおりです。The version 2.x runtime uses a new binding extensibility model that offers these advantages:

  • サード パーティのバインド拡張のサポート。Support for third-party binding extensions.

  • ランタイムとバインドの分離。Decoupling of runtime and bindings. この変更により、バインド拡張を個別にバージョン管理したり、解放したりできます。This change allows binding extensions to be versioned and released independently. たとえば、基になる SDK の新しいバージョンに依存する拡張のバージョンにアップグレードするよう選択できます。You can, for example, opt to upgrade to a version of an extension that relies on a newer version of an underlying SDK.

  • より軽量な実行環境。ここでは、使用中のバインドのみがランタイムによって識別され、読み込まれます。A lighter execution environment, where only the bindings in use are known and loaded by the runtime.

HTTP とタイマーのトリガーを除き、すべてのバインドを関数アプリ プロジェクトに明示的に追加するか、ポータルで登録する必要があります。With the exception of HTTP and timer triggers, all bindings must be explicitly added to the function app project, or registered in the portal. 詳細については、「バインディング拡張機能を登録する」を参照してください。For more information, see Register binding extensions.

各ランタイム バージョンでサポートされるバインドを次の表に示します。The following table shows which bindings are supported in each runtime version.

次の表は、Azure Functions の 2 つのメジャー バージョンのランタイムでサポートされているバインディングを示します。The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

typeType 1.x1.x 2.x12.x1 トリガーTrigger 入力Input 出力Output
Blob StorageBlob Storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
外部ファイル 2External File2
外部テーブル 2External Table2
HTTPHTTP
Microsoft Graph
Excel テーブル
Microsoft Graph
Excel tables
Microsoft Graph
OneDrive ファイル
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook メール
Microsoft Graph
Outlook email
Microsoft Graph
Events
Microsoft Graph
Events
Microsoft Graph
Auth トークン
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
Table StorageTable storage
TimerTimer
TwilioTwilio
WebhookWebhooks

1 2.x では、HTTP と Timer を除くすべてのバインドを登録する必要があります。1 In 2.x, all bindings except HTTP and Timer must be registered. バインディング拡張機能を登録する」を参照してください。See Register binding extensions.

2 実験的 — サポート対象外で、将来破棄される可能性があります。2 Experimental — not supported and might be abandoned in the future.

次の手順Next steps

詳細については、次のリソースを参照してください。For more information, see the following resources: