Azure Stream Analytics からの Azure Functions 出力

Azure Functions は、インフラストラクチャを明示的にプロビジョニングまたは管理することなく、オンデマンドでコードを実行するために使用できるサーバーレス コンピューティング サービスです。 これにより、Azure またはパートナーのサービス内で発生するイベントによってトリガーされるコードを実装できます。 トリガーに応答する Azure Functions のこの機能によって、Azure Stream Analytics の自然な出力になります。 この出力アダプターを使用すると、ユーザーは Stream Analytics を Azure Functions に接続し、さまざまなイベントに応じてスクリプトまたはコードの一部を実行することができます。

Stream Analytics からの Azure Functions 出力は、21Vianet によって運営される Microsoft Azure および Azure Germany (T-Systems International) では使用できません。 マルチテナント クラスターで実行されている Stream Analytics ジョブから仮想ネットワーク (VNet) 内の Azure Functions への接続もサポートされていません。

Azure Stream Analytics では、HTTP トリガーを使用して Azure Functions を呼び出します。 Azure Functions 出力アダプターは、次の構成可能なプロパティで使用できます。

プロパティ名 説明
関数アプリ Azure Functions アプリの名前です。
機能 ご自分の Azure Functions アプリ内にある関数の名前です。
Key 別のサブスクリプションの Azure Functions を使用するには、ご自分の関数にアクセスするためのキーを指定します。
最大バッチ サイズ ご自分の Azure Functions に送信される各出力バッチの最大サイズを設定できるプロパティです。 入力の単位はバイトです。 既定値は 262,144 バイト (256 KB) です。
最大バッチ カウント Azure Functions に送信される各バッチのイベントの最大数を指定できるプロパティです。 既定値は 100 です。

Azure Stream Analytics は、正常に処理されたバッチに対して Functions アプリから HTTP ステータス 200 を想定しています。

Azure Stream Analytics は、Azure Functions から 413 ("http の要求したエンティティが大きすぎる") 例外を受け取ると、Azure Functions に送信するバッチのサイズを縮小します。 Azure Functions コードで、この例外を使用して、Azure Stream Analytics がサイズの大きすぎるバッチを送信しないようにします。 また、関数で使用する最大バッチ カウントおよび最大バッチ サイズの値が Stream Analytics ポータルに入力した値と矛盾しないことを確認します。

Note

テスト接続中、Stream Analytics から Azure Functions に空のバッチが送信 (POST) され、この 2 つの間の接続が機能するかどうかがテストされます。 テスト接続に合格するように、Functions アプリで空のバッチ要求が処理されるようにします。

また、時間枠内に開始するイベントがない場合も、出力は生成されません。 その結果、computeResult 関数は呼び出されません。 この動作は、組み込みのウィンドウ集計関数と一致します。

パーティション分割

パーティション キーは、クエリの PARTITION BY 句に基づきます。 出力ライターの数は、完全並列化されたクエリに対する入力のパーティション分割に従います。

出力バッチ サイズ

既定のバッチ サイズは 262,144 バイト (256 KB) です。 バッチごとの既定のイベント数は 100 です。 バッチ サイズは構成可能で、Stream Analytics の出力オプションで増減させることができます。

制限事項

Azure Functions は、HTTP クライアントが 100 秒後にタイムアウトするため、100 秒以内に要求を完了する必要があります。 Azure Functions によるデータのバッチ処理の時間が 100 秒を上回ると、タイムアウトとなり、再試行がトリガーされます。 この再試行によってデータが重複する可能性があります。これは、Azure Functions がデータを再度処理し、前の要求で部分的に出力された可能性があるため、同じ出力が生成される可能性があるためです。

コード サンプル

Azure Functions の出力を使用して、メッセージをサポート対象外のデータベース (Redis など) にリレーすることや、Azure SQL でテーブルを更新することができます。

次のステップ