Azure Functions の開発者向けガイド

Azure Functions の特定の関数は、使用する言語またはバインドに関係なく、いくつかの中核となる技術的な概念とコンポーネントを共有します。 特定の言語またはバインドに固有の詳細を学習する前に、それらすべてに適用されるこの概要をお読みください。

この記事は、「Azure Functions の概要」を既に読んでいて、トリガー、バインド、JobHost ランタイムなどの WebJobs SDK の概念を熟知していることを前提として書かれています。 Azure Functions は WebJobs SDK が基になっています。

関数のコード

関数 は Azure Functions の主要な概念です。 好みの言語を選択して関数のコードを記述し、コードと構成ファイルを同じフォルダーに保存します。 構成の名前は function.json で、JSON 構成データを格納します。 さまざまな言語がサポートされており、各言語はその言語での作業向けに最適化された少しずつ異なるエクスペリエンスを備えています。

function.json ファイルは、関数バインドとその他の構成設定を定義します。 ランタイムはこのファイルを使用して、監視対象のイベントを特定し、関数の実行との間でデータを渡したりデータを受け取ったりする方法を判断します。 以下に function.json ファイルの例を示します。

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

関数が実行されることを防ぐために、disabled プロパティを true に設定します。

bindings プロパティで、トリガーとバインドの両方を構成します。 各バインドは、いくつかの一般的な設定と、バインドの特定の種類に固有の設定を共有します。 すべてのバインドには次の設定が必要です。

プロパティ 値/型 説明
type string バインドの種類。 たとえば、「 queueTrigger」のように入力します。
direction "in"、"'out" バインドが関数への受信データか、関数からの送信データかを示します。
name string 関数のバインドされたデータに使用される名前。 C# の場合は引数の名前です。JavaScript の場合はキー/値リストのキーです。

関数アプリ

関数アプリは、Azure App Service でまとめて管理される&1; つまたは複数の個々の関数で構成されます。 関数アプリ内のすべての関数は、同じ料金プラン、継続的なデプロイ、およびランタイムのバージョンを共有します。 複数の言語で記述された関数は、同じ関数アプリをすべて共有できます。 関数を整理し、まとめて管理する方法として関数アプリを考えてください。

ランタイム (スクリプト ホストおよび Web ホスト)

ランタイム (つまりスクリプト ホスト) は基になる WebJobs SDK ホストであり、イベントをリッスンし、データを収集して送信して、最終的にはコードを実行します。

HTTP トリガーを容易にするため、運用環境シナリオでスクリプト ホストの前に配置されるように設計されている Web ホストもあります。 ホストを&2; つ持つことで、Web ホストによって管理されるフロントエンド トラフィックからスクリプト ホストを分離できます。

フォルダー構造

特定関数アプリのすべての関数のコードは、ホスト構成ファイルおよび 1 つまたは複数のサブフォルダーを含むルート フォルダーに格納され、次の例に示すように、各フォルダーには関数ごとのコードが含まれます。

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

host.json ファイルにはランタイム固有の構成が含まれ、関数アプリのルート フォルダーに格納されています。 利用可能な設定に関する詳細については、WebJobs.Script リポジトリ wiki の host.json を参照してください。

各関数には、1 つまたは複数のコード ファイル、function.json 構成、およびその他の依存関係を含むフォルダーが割り当てられています。

Azure App Service で関数アプリに関数をデプロイするためにプロジェクトをセットアップするときは、このフォルダー構造をサイト コードとして扱うことができます。 継続的インテグレーションやデプロイなどの既存のツール、またはカスタム デプロイ スクリプトを使用して、デプロイ時のパッケージのインストールまたはコードの変換を行うことができます。

メモ

host.json ファイルと関数フォルダーを直接 wwwroot フォルダーにデプロイします。 デプロイに wwwroot フォルダーを含めないでください。 そうしないと、wwwroot\wwwroot フォルダーができてしまいます。

関数アプリ ファイルを更新する方法

Azure ポータルに組み込まれている関数エディターでは、 function.json ファイルと関数のコード ファイルを更新できます。 package.jsonproject.json などのその他のファイルや依存関係をアップロードまたは更新するには、その他のデプロイ方法を使用する必要があります。

関数アプリは App Service 上で構築されるため、標準 Web アプリで利用できるデプロイ オプション はすべて、関数アプリでも利用できます。 ここでは、関数アプリ ファイルをアップロードまたは更新するための方法をいくつか紹介します。

App Service Editor を使用するには

  1. Azure Functions ポータルで、 [関数アプリの設定]をクリックします。
  2. [詳細設定] セクションで、[App Service の設定に移動] をクリックします。
  3. [開発ツール] の App Menu ナビゲーション バーの [App Service Editor] をクリックします。
  4. [移動]をクリックします。

    App Service Editor の読み込み後、host.json ファイルと関数フォルダーが wwwroot の下に表示されます。

  5. ファイルを開いて編集するか、開発コンピューターからドラッグアンドドロップしてファイルをアップロードします。

関数アプリの SCM (Kudu) エンドポイントを使用するには

  1. https://<function_app_name>.scm.azurewebsites.netに移動します。
  2. [デバッグ コンソール]、[CMD] の順にクリックします。
  3. D:\home\site\wwwroot\ に移動し、host.json または D:\home\site\wwwroot\<function_name> を更新し、関数のファイルを更新します。
  4. アップロードするファイルをファイル グリッドのフォルダーにドラッグアンドドロップします。 ファイルをドロップできるファイル グリッドには&2; つの領域があります。 .zip ファイルの場合は、[Drag here to upload and unzip (アップロードして解凍するにはここにドラッグしてください)] というラベルの付いたボックスが表示されます。 他の種類のファイルの場合は、ファイル グリッド内の [unzip (ファイルの解凍)] ボックスの外側にドロップします。

FTP を使用するには

  1. こちら の指示に従って、FTP を構成します。
  2. 関数アプリのサイトに接続されたら、更新された host.json ファイルを /site/wwwroot にコピーするか、関数ファイルを /site/wwwroot/<function_name> にコピーします。

継続的なデプロイを使用するには

Azure Functions の継続的なデプロイ」のトピックの手順に従ってください。

並列実行

シングル スレッドの関数ランタイムが処理できるより速く複数のトリガー イベントが発生する場合、ランタイムは関数を並列で複数回呼び出す場合があります。 関数アプリが従量課金ホスティング プランを使用している場合、関数アプリは自動的にスケールアウトできます。 アプリが従量課金ホスティング プランと標準の App Service ホスティング プランのどちらで実行されていても、関数アプリの各インスタンスは、複数の同時関数呼び出しを、複数のスレッドを使用して並列に処理します。 各関数アプリ インスタンスでの同時関数呼び出しの最大数は、使用されるトリガーの種類と、関数アプリ内の他の関数によって使用されるリソースに応じて異なります。

Azure Functions パルス

パルスは、関数の実行頻度と成功または失敗を示すライブ イベント ストリームです。 また、平均実行時間を監視することができます。 今後、さらに機能とカスタマイズが追加される予定です。 [パルス] ページには [監視] タブからアクセスできます。

リポジトリ

Azure Functions のコードはオープン ソースであり、GitHub リポジトリに保存されています。

バインド

サポートされるすべてのバインドを次の表に示します。

サービス トリガー* 入力 出力
スケジュール Azure Functions
HTTP (REST または Webhook) Azure Functions ✔**
Blob Storage Azure Storage (Azure Storage)
イベント Azure Event Hubs
キュー Azure Storage (Azure Storage)
キューとトピック Azure Service Bus
Storage テーブル Azure Storage (Azure Storage)
SQL テーブル Azure Mobile Apps
NoSQL DB Azure DocumentDB
プッシュ通知 Azure 通知ハブ
Twilio SMS テキスト Twilio
SendGrid 電子メール SendGrid

(* - すべてのトリガーには入力データが関連付けられています)

(** - HTTP 出力バインドには HTTP トリガーが必要です)

問題の報告

項目 説明 リンク
ランタイム スクリプト ホスト、トリガー、バインド、言語のサポート 問題のファイリング
テンプレート 作成テンプレートに関するコードの問題 問題のファイリング
ポータル ユーザー インターフェイスまたはエクスペリエンスの問題 問題のファイリング

次のステップ

詳細については、次のリソースを参照してください。