Azure Functions の開発者向けガイドAzure Functions developers guide

Azure Functions の特定の関数は、使用する言語またはバインドに関係なく、いくつかの中核となる技術的な概念とコンポーネントを共有します。In Azure Functions, specific functions share a few core technical concepts and components, regardless of the language or binding you use. 特定の言語またはバインドに固有の詳細を学習する前に、それらすべてに適用されるこの概要をお読みください。Before you jump into learning details specific to a given language or binding, be sure to read through this overview that applies to all of them.

この記事は、「Azure Functions の概要」を既に読んでいて、トリガー、バインド、JobHost ランタイムなどの WebJobs SDK の概念を熟知していることを前提として書かれています。This article assumes that you've already read the Azure Functions overview and are familiar with WebJobs SDK concepts such as triggers, bindings, and the JobHost runtime. Azure Functions は WebJobs SDK が基になっています。Azure Functions is based on the WebJobs SDK.

関数のコードFunction code

関数 は Azure Functions の主要な概念です。A function is the primary concept in Azure Functions. 好みの言語を選択して関数のコードを記述し、コードと構成ファイルを同じフォルダーに保存します。You write code for a function in a language of your choice and save the code and configuration files in the same folder. 構成の名前は function.json で、JSON 構成データを格納します。The configuration is named function.json, which contains JSON configuration data. さまざまな言語がサポートされており、各言語はその言語での作業向けに最適化された少しずつ異なるエクスペリエンスを備えています。Various languages are supported, and each one has a slightly different experience optimized to work best for that language.

function.json ファイルは、関数バインドとその他の構成設定を定義します。The function.json file defines the function bindings and other configuration settings. ランタイムはこのファイルを使用して、監視対象のイベントを特定し、関数の実行との間でデータを渡したりデータを受け取ったりする方法を判断します。The runtime uses this file to determine the events to monitor and how to pass data into and return data from function execution. 以下に function.json ファイルの例を示します。The following is an example function.json file.

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

関数が実行されることを防ぐために、disabled プロパティを true に設定します。Set the disabled property to true to prevent the function from being executed.

bindings プロパティで、トリガーとバインドの両方を構成します。The bindings property is where you configure both triggers and bindings. 各バインドは、いくつかの一般的な設定と、バインドの特定の種類に固有の設定を共有します。Each binding shares a few common settings and some settings, which are specific to a particular type of binding. すべてのバインドには次の設定が必要です。Every binding requires the following settings:

プロパティProperty 値/型Values/Types 説明Comments
type 文字列string バインドの種類。Binding type. たとえば、「 queueTrigger」のように入力します。For example, queueTrigger.
direction "in"、"'out"'in', 'out' バインドが関数への受信データか、関数からの送信データかを示します。Indicates whether the binding is for receiving data into the function or sending data from the function.
name 文字列string 関数のバインドされたデータに使用される名前。The name that is used for the bound data in the function. C# の場合は引数の名前です。JavaScript の場合はキー/値リストのキーです。For C#, this is an argument name; for JavaScript, it's the key in a key/value list.

関数アプリFunction app

関数アプリは、Azure App Service でまとめて管理される 1 つまたは複数の個々の関数で構成されます。A function app is comprised of one or more individual functions that are managed together by Azure App Service. 関数アプリ内のすべての関数は、同じ料金プラン、継続的なデプロイ、およびランタイムのバージョンを共有します。All of the functions in a function app share the same pricing plan, continuous deployment and runtime version. 複数の言語で記述された関数は、同じ関数アプリをすべて共有できます。Functions written in multiple languages can all share the same function app. 関数を整理し、まとめて管理する方法として関数アプリを考えてください。Think of a function app as a way to organize and collectively manage your functions.

ランタイム (スクリプト ホストおよび Web ホスト)Runtime (script host and web host)

ランタイム (つまりスクリプト ホスト) は基になる WebJobs SDK ホストであり、イベントをリッスンし、データを収集して送信して、最終的にはコードを実行します。The runtime, or script host, is the underlying WebJobs SDK host that listens for events, gathers and sends data, and ultimately runs your code.

HTTP トリガーを容易にするため、運用環境シナリオでスクリプト ホストの前に配置されるように設計されている Web ホストもあります。To facilitate HTTP triggers, there is also a web host that is designed to sit in front of the script host in production scenarios. ホストを 2 つ持つことで、Web ホストによって管理されるフロントエンド トラフィックからスクリプト ホストを分離できます。Having two hosts helps to isolate the script host from the front end traffic managed by the web host.

フォルダー構造Folder Structure

特定の関数アプリ内のすべての関数のコードは、ホスト構成ファイルと 1 つ以上のサブフォルダーを含むルート フォルダーにあります。The code for all the functions in a specific function app is located in a root folder that contains a host configuration file and one or more subfolders. 各サブフォルダーには、次の例のように、個別の関数のコードが含まれています。Each subfolder contains the code for a separate function, as in the following example:

wwwroot
 | - host.json
 | - mynodefunction
 | | - function.json
 | | - index.js
 | | - node_modules
 | | | - ... packages ...
 | | - package.json
 | - mycsharpfunction
 | | - function.json
 | | - run.csx

host.json ファイルにはランタイム固有の構成が含まれています。このファイルは関数アプリのルート フォルダーにあります。The host.json file contains some runtime-specific configurations, and sits in the root folder of the function app. 使用可能な設定の詳細については、host.json のリファレンスに関するページを参照してください。For information about settings that are available, see the host.json reference.

関数にはそれぞれ、1 つ以上のコード ファイル、function.json 構成、およびその他の依存関係を含むフォルダーがあります。Each function has a folder that contains one or more code files, the function.json configuration, and other dependencies.

Azure App Service で関数アプリに関数をデプロイするためにプロジェクトをセットアップするときは、このフォルダー構造をサイト コードとして扱うことができます。When setting-up a project for deploying functions to a function app in Azure App Service, you can treat this folder structure as your site code. 継続的インテグレーションやデプロイなどの既存のツール、またはカスタム デプロイ スクリプトを使用して、デプロイ時のパッケージのインストールまたはコードの変換を行うことができます。You can use existing tools like continuous integration and deployment, or custom deployment scripts for doing deploy time package installation or code transpilation.

注意

host.json ファイルと関数フォルダーを直接 wwwroot フォルダーにデプロイします。Make sure to deploy your host.json file and function folders directly to the wwwroot folder. デプロイに wwwroot フォルダーを含めないでください。Do not include the wwwroot folder in your deployments. そうしないと、wwwroot\wwwroot フォルダーができてしまいます。Otherwise, you end up with wwwroot\wwwroot folders.

関数アプリ ファイルを更新する方法How to update function app files

Azure ポータルに組み込まれている関数エディターでは、 function.json ファイルと関数のコード ファイルを更新できます。The function editor built into the Azure portal lets you update the function.json file and the code file for a function. package.jsonproject.json などのその他のファイルや依存関係をアップロードまたは更新するには、その他のデプロイ方法を使用する必要があります。To upload or update other files such as package.json or project.json or dependencies, you have to use other deployment methods.

関数アプリは App Service 上で構築されるため、標準 Web アプリで利用できるデプロイ オプション はすべて、関数アプリでも利用できます。Function apps are built on App Service, so all the deployment options available to standard web apps are also available for function apps. ここでは、関数アプリ ファイルをアップロードまたは更新するための方法をいくつか紹介します。Here are some methods you can use to upload or update function app files.

App Service Editor を使用するにはTo use App Service Editor

  1. Azure Functions ポータルで、[プラットフォーム機能] をクリックします。In the Azure Functions portal, click Platform features.
  2. [開発ツール] セクションで、[App Service Editor エディター] をクリックします。In the DEVELOPMENT TOOLS section, click App Service Editor.
    App Service Editor の読み込み後、host.json ファイルと関数フォルダーが wwwroot の下に表示されます。After App Service Editor loads, you'll see the host.json file and function folders under wwwroot.
  3. ファイルを開いて編集するか、開発コンピューターからドラッグアンドドロップしてファイルをアップロードします。Open files to edit them, or drag and drop from your development machine to upload files.

関数アプリの SCM (Kudu) エンドポイントを使用するにはTo use the function app's SCM (Kudu) endpoint

  1. https://<function_app_name>.scm.azurewebsites.netに移動します。Navigate to: https://<function_app_name>.scm.azurewebsites.net.
  2. [デバッグ コンソール]、[CMD] の順にクリックします。Click Debug Console > CMD.
  3. D:\home\site\wwwroot\ に移動し、host.json または D:\home\site\wwwroot\<function_name> を更新し、関数のファイルを更新します。Navigate to D:\home\site\wwwroot\ to update host.json or D:\home\site\wwwroot\<function_name> to update a function's files.
  4. アップロードするファイルをファイル グリッドのフォルダーにドラッグアンドドロップします。Drag-and-drop a file you want to upload into the appropriate folder in the file grid. ファイルをドロップできるファイル グリッドには 2 つの領域があります。There are two areas in the file grid where you can drop a file. .zip ファイルの場合は、[Drag here to upload and unzip (アップロードして解凍するにはここにドラッグしてください)] というラベルの付いたボックスが表示されます。For .zip files, a box appears with the label "Drag here to upload and unzip." 他の種類のファイルの場合は、ファイル グリッド内の [unzip (ファイルの解凍)] ボックスの外側にドロップします。For other file types, drop in the file grid but outside the "unzip" box.

継続的なデプロイを使用するにはTo use continuous deployment

Azure Functions の継続的なデプロイ」のトピックの手順に従ってください。Follow the instructions in the topic Continuous deployment for Azure Functions.

並列実行Parallel execution

シングル スレッドの関数ランタイムが処理できるより速く複数のトリガー イベントが発生する場合、ランタイムは関数を並列で複数回呼び出す場合があります。When multiple triggering events occur faster than a single-threaded function runtime can process them, the runtime may invoke the function multiple times in parallel. 関数アプリが従量課金ホスティング プランを使用している場合、関数アプリは自動的にスケールアウトできます。If a function app is using the Consumption hosting plan, the function app could scale out automatically. アプリが従量課金ホスティング プランと標準の App Service ホスティング プランのどちらで実行されていても、関数アプリの各インスタンスは、複数の同時関数呼び出しを、複数のスレッドを使用して並列に処理します。Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads. 各関数アプリ インスタンスでの同時関数呼び出しの最大数は、使用されるトリガーの種類と、関数アプリ内の他の関数によって使用されるリソースに応じて異なります。The maximum number of concurrent function invocations in each function app instance varies based on the type of trigger being used as well as the resources used by other functions within the function app.

Functions ランタイムのバージョン管理Functions runtime versioning

FUNCTIONS_EXTENSION_VERSION アプリ設定を使用して、Functions ランタイムのバージョンを構成できます。You can configure the version of the Functions runtime using the FUNCTIONS_EXTENSION_VERSION app setting. たとえば、「~1」の値は、Function App がそのメジャー バージョンとして 1 を使用することを示します。For example, the value "~1" indicates that your Function App will use 1 as its major version. Function App は、リリースされたときにそれぞれの新しいマイナー バージョンにアップグレードされます。Function Apps are upgraded to each new minor version as they are released. お使いの関数アプリの正確なバージョンを表示する方法など、詳細については、「Azure Functions ランタイム バージョンをターゲットにする方法」をご覧ください。For more information, including how to view the exact version of your function app, see How to target Azure Functions runtime versions.

リポジトリRepositories

Azure Functions のコードはオープン ソースであり、GitHub リポジトリに保存されています。The code for Azure Functions is open source and stored in GitHub repositories:

バインドBindings

サポートされるすべてのバインドを次の表に示します。Here is a table of all supported bindings.

次の表は、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.x2.x トリガーTrigger 入力Input 出力Output
Blob StorageBlob Storage 11
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
外部ファイル 2External File2
外部テーブル 2External Table2
HTTPHTTP 11
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 11
SendGridSendGrid
Service BusService Bus
Table StorageTable storage 11
TimerTimer
TwilioTwilio
WebhookWebhooks

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

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

バインドが原因のエラーが発生している場合は、Having issues with errors coming from the bindings? Azure Functions のバインド エラー コードに関するドキュメントを参照してください。Review the Azure Functions Binding Error Codes documentation.

問題の報告Reporting Issues

項目Item 説明Description リンクLink
ランタイムRuntime スクリプト ホスト、トリガー、バインド、言語のサポートScript Host, Triggers & Bindings, Language Support 問題のファイリングFile an Issue
テンプレートTemplates 作成テンプレートに関するコードの問題Code Issues with Creation Template 問題のファイリングFile an Issue
ポータルPortal ユーザー インターフェイスまたはエクスペリエンスの問題User Interface or Experience Issue 問題のファイリングFile an Issue

次の手順Next steps

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