Azure Functions は、インフラストラクチャを明示的にプロビジョニングまたは管理することなく、オンデマンドでコードを実行するために使用できるサーバーレス コンピューティング サービスです。 これにより、Azure またはパートナー サービスで発生するイベントによってトリガーされるコードを実装できます。 Azure Functions がトリガーに応答するこの機能により、Azure Stream Analytics の自然な出力になります。 この出力アダプターを使用すると、ユーザーは Stream Analytics を Azure Functions に接続し、さまざまなイベントに応答してスクリプトまたはコードを実行できます。
Stream Analytics からの Azure Functions 出力は、21Vianet と Azure Germany (T-Systems International) が運営する Microsoft Azure では使用できません。 マルチテナント クラスターで実行されている Stream Analytics ジョブからの仮想ネットワーク (VNet) 内の Azure Functions への接続もサポートされていません。
Azure Stream Analytics は、HTTP トリガーを介して Azure Functions を呼び出します。 Azure Functions 出力アダプターは、次の構成可能なプロパティで使用できます。
| プロパティ名 | 説明 |
|---|---|
| 関数アプリ | あなたのAzure Functionsアプリの名前です。 |
| Function | あなたのAzure Functionsアプリ内の関数名です。 |
| 鍵 | 他のサブスクリプションからAzure関数を使いたい場合は、その関数にアクセスするためのキーを提供することで可能です。 |
| 最大バッチ サイズ | Azure関数に送る各出力バッチの最大サイズを設定できるプロパティです。 入力単位はバイト単位です。 既定では、この値は 262,144 バイト (256 KB) です。 |
| 最大バッチ カウント | Azure Functionsに送るバッチごとに最大イベント数を指定するプロパティです。 既定値は 100 です。 |
Azure Stream Analytics では、正常に処理されたバッチに対して Functions アプリからの HTTP 状態 200 が想定されます。
Azure Stream Analytics が Azure 関数から 413 ("http Request Entity Too Large") 例外を受け取ると、Azure Functions に送信されるバッチのサイズが小さくなります。 Azure 関数コードでは、この例外を使用して、Azure Stream Analytics が特大のバッチを送信しないようにします。 また、関数で使用される最大バッチ数とサイズ値が、Stream Analytics ポータルに入力された値と一致していることを確認します。
注
テスト接続中、Stream Analytics は空のバッチを Azure Functions に送信し、2 つの間の接続が機能するかどうかをテストします。 テスト接続に合格するように、Functions アプリが空のバッチ要求を処理していることを確認します。
また、時間枠内にイベントのランディングがない状況では、出力は生成されません。 その結果、 computeResult 関数は呼び出されません。 この動作は、組み込みのウィンドウ集計関数と一致します。
パーティショニング
パーティション キーは、クエリの PARTITION BY 句に基づいています。 出力ライターの数は、 完全に並列化されたクエリの入力パーティション分割に従います。
出力バッチ サイズ
既定のバッチ サイズは 262,144 バイト (256 KB) です。 バッチあたりの既定のイベント数は 100 です。 バッチ サイズは構成可能であり、Stream Analytics の出力オプションで増減できます。
制限事項
HTTP クライアントが 100 秒後にタイムアウトすると、Azure Functions は 100 秒以内にその要求を完了する必要があります。 Azure Functions がデータのバッチを処理するのに 100 秒以上かかる場合は、タイムアウトが発生して再試行がトリガーされます。 この再試行により、データが重複する可能性があります。これは、Azure Functions がデータを再処理し、前の要求で部分的に出力された可能性があるため、同じ出力が生成される可能性があるためです。
コードサンプル
Azure Functions の出力を使用して、 Redis などのサポートされていないデータベースにメッセージを中継したり、 Azure SQL のテーブルを更新したりできます。
次のステップ
- クイック スタート: Azure Portal を使用して Stream Analytics ジョブを作成する
- クイック スタート:Azure CLI を使用して Azure Stream Analytics ジョブを作成する
- クイック スタート: ARM テンプレートを使用して Azure Stream Analytics ジョブを作成する
- クイック スタート: Azure PowerShell を使用して Stream Analytics ジョブを作成する
- クイック スタート: Visual Studio を使用して Azure Stream Analytics ジョブを作成する
- クイック スタート: Visual Studio Code で Azure Stream Analytics ジョブを作成する