Azure Data Factory の Azure Functions アクティビティ
適用対象: Azure Data Factory Azure Synapse Analytics
ヒント
企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。
Azure 関数アクティビティを使用すると、Azure Data Factory または Azure Synapse Analytics パイプライン内で Azure Functions を実行できます。 Azure 関数を実行するには、リンク サービス接続を作成する必要があります。 その後、リンク サービスを、実行する予定の Azure 関数を指定するアクティビティと共に使用できます。
UI を使用して Azure 関数アクティビティを作成する
パイプライン内で Azure 関数アクティビティを使用するには、次の手順を実行します。
パイプラインの [アクティビティ] ペインにある [Azure 関数] セクションを展開し、Azure 関数アクティビティをパイプライン キャンバスにドラッグします。
キャンバス上で新しい Azure 関数アクティビティを選び (まだ選ばれていない場合)、その [設定] タブを選んで、詳細を編集します。
Azure 関数のリンク サービスをまだ定義していない場合は、[新規作成] を選んで新しく作成します。 新しい Azure 関数の [リンクされたサービス] ペインで、既存の Azure 関数アプリ URL を選び、ファンクション キーを指定します。
Azure 関数のリンク サービスを選んだ後、関数名とその他の詳細を入力して構成を完了します。
Azure Functions のリンクされたサービス
Azure Functions の戻り値の型は、有効な JObject
である必要があります。 (JArray は JObject
では "ない" ことに留意してください。)JObject
以外の戻り値の型が失敗し、ユーザー エラー応答コンテンツは有効な JObject ではないが発生します。
関数キーを使用すると、関数アプリ内で個別の一意のキーまたはマスター キーを持つ関数名に安全にアクセスできます。 マネージド ID は、関数アプリ全体への安全なアクセスを提供します。 ユーザーは、関数名にアクセスするためにキーを指定する必要があります。 関数アクセス キーの詳細については、関数のドキュメントを参照してください
プロパティ | 説明 | 必須 |
---|---|---|
Type | type プロパティは、次のように設定する必要があります:AzureFunction | はい |
関数アプリの URL | Azure 関数アプリの URL。 形式は https://<accountname>.azurewebsites.net です。 この URL は、Azure portal で関数アプリを表示した際に URL セクションに表示される値です |
はい |
ファンクション キー | Azure 関数のアクセス キーです。 それぞれの関数の [管理] セクションをクリックし、ファンクション キーまたはホスト キーをコピーします。 詳細はこちらで確認してください: アクセス キーの操作 | はい |
認証 | Azure 関数の呼び出しに使う認証方法。 サポートされる値は、[システム割り当てマネージド ID] または [匿名] です。 | はい |
Resource ID | Azure 関数のアプリ (クライアント) ID。 それぞれの関数の [認証] セクションに切り替え、[ID プロバイダー] でアプリ (クライアント) ID を取得します。 このプロパティは、システム割り当てマネージド ID を使用するときに表示されます。 詳細については、「Microsoft Entra ログインを使用するように App Service または Azure Functions アプリを構成する」を参照してください。 | いいえ |
注意
匿名認証を使用する場合は、Azure 関数側で ID を削除していることを確認します。
Azure Functions アクティビティ
プロパティ | 説明 | 指定できる値 | 必須 |
---|---|---|---|
名前 | パイプラインのアクティビティの名前。 | String | はい |
Type | アクティビティの種類は 'AzureFunctionActivity' です | String | はい |
リンクされたサービス | 対応する Azure Functions アプリの、Azure Functions のリンクされたサービス | リンクされたサービスの参照 | はい |
関数名 | このアクティビティによって呼び出される Azure Functions アプリ内の関数の名前 | String | はい |
メソッド | 関数呼び出しのための REST API メソッド | 文字列がサポートされている型:"GET"、"POST"、"PUT" | はい |
ヘッダー | 要求に送信されるヘッダー。 たとえば、要求に種類と言語を設定する場合: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } | 文字列 (または文字列の resultType を含む式) | いいえ |
本文 | 関数 API メソッドへの要求と共に送信される本文 | 文字列 (または文字列の resultType を含む式) またはオブジェクト。 | PUT/POST メソッドには必須です |
「要求ペイロードのスキーマ」セクションにある要求ペイロードのスキーマを参照してください。
ルーティングとクエリ
Azure Functions アクティビティでは、ルーティングがサポートされます。 たとえば、Azure 関数にエンドポイント https://functionAPP.azurewebsites.net/api/<functionName>/<value>?code=<secret>
がある場合、その後で Azure 関数のアクティビティを使用する functionName
は<functionName>/<value>
です。 実行時に任意のfunctionName
を提供するようこの関数をパラメーター化できます。
Note
Durable Functions の functionName
は、そのルーティング情報を含めるために、JSON 定義内の関数のバインドの route プロパティから取得する必要があります。 ルートの詳細が含まれていない functionName
を使用するだけでは、関数アプリが見つからないためエラーが発生します。
また、Azure Functions アクティビティではクエリがサポートされます。 クエリは functionName
の一部として含まれている必要があります。 たとえば、関数名がHttpTriggerCSharp
であり含めるクエリはname=hello
である場合、Azure Functions のアクティビティにおいてfunctionName
をHttpTriggerCSharp?name=hello
として構築できます。 この関数は、実行時に値を決定できるように、パラメーター化できます。
タイムアウトと長期関数
Azure Functions は、設定で構成したfunctionTimeout
設定に関係無く 230 秒後にタイムアウトします。 詳細については、 こちらの記事を参照してください。 この振る舞いを回避するには、非同期パターンに従うか Durable Functions を使用します。 Durable Functions の利点は独自の状態追跡メカニズムを提供する点にあるため、独自の状態追跡を実装する必要はありません。
この記事で Durable Functions について詳しく説明します。 Azure Functions のアクティビティを設定して Durable 関数を呼び出すことができます。これにより、この例など異なる URI で応答を返します。 statusQueryGetUri
は関数の実行中に HTTP ステータス 202 を返すため、Web アクティビティを使用して、関数の状態をポーリングできます。 Web アクティビティの url
フィールドを @activity('<AzureFunctionActivityName>').output.statusQueryGetUri
に設定します。 Durable 関数が完了したら、関数の出力は、Web アクティビティの出力になります。
サンプル
Azure Functions を使用して tar ファイルのコンテンツを抽出するサンプルについては、こちらを参照してください。
関連するコンテンツ
サポートされているアクティビティの詳細については、「パイプラインとアクティビティ」を参照してください。