次の方法で共有


Azure Data Factory における Azure Functions のアクティビティ

APPLIES TO: Azure Data Factory Azure Synapse Analytics

ヒント

Data Factory in Microsoft Fabric は、よりシンプルなアーキテクチャ、組み込みの AI、および新機能を備えた次世代のAzure Data Factoryです。 データ統合を初めて使用する場合は、Fabric Data Factory から始めます。 既存の ADF ワークロードをFabricにアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。

Azure関数アクティビティを使用すると、Azure Data Factoryまたは Synapse パイプラインでAzure Functionsを実行できます。 Azure関数を実行するには、リンクされたサービス接続を作成する必要があります。 その後、実行するAzure関数を指定するアクティビティで、リンクされたサービスを使用できます。

UI を使用してAzure関数アクティビティを作成する

パイプラインで Azure 関数アクティビティを使用するには、次の手順を実行します。

  1. [パイプライン アクティビティ] ウィンドウの [Azure関数] セクションを展開し、Azure関数アクティビティをパイプライン キャンバスにドラッグします。

  2. キャンバス上の新しいAzure関数アクティビティがまだ選択されていない場合は選択し、そのSettings タブを選択して詳細を編集します。

    Azure Function の活動の UI のスクリーンショット。

  3. Azure関数のリンクされたサービスがまだ定義されていない場合は、[新規] を選択して新しいサービスを作成します。 新しいAzure関数のリンクされたサービス ウィンドウで、既存の Azure Function App の URL を選択し、関数キーを指定します。

    新しいAzure関数のリンクされたサービス作成ウィンドウのスクリーンショット.

  4. Azure関数のリンクされたサービスを選択した後、関数名とその他の詳細を指定して構成を完了します。

Azure関数のリンクされたサービス

Azure関数の戻り値の型は、有効なJObjectである必要があります。 (JArrayに注意してください)。JObject以外の戻り値の型は失敗し、ユーザー エラーが発生しますJObject

関数キーを使用すると、関数アプリ内で個別の一意のキーまたはマスター キーを持つ関数名に安全にアクセスできます。 マネージド ID は、関数アプリ全体への安全なアクセスを提供します。 ユーザーは、関数名にアクセスするためにキーを指定する必要があります。 関数アクセス キーの詳細については、関数のドキュメントを参照してください

プロパティ 説明 必須
タイプ type プロパティは、次のように設定する必要があります:AzureFunction はい
関数アプリの URL Azure Function App の URL。 形式は https://<accountname>.azurewebsites.net です。 この URL は、Azure ポータルで Function App を表示するときの URL セクションの値です。 はい
ファンクション キー Azure関数のアクセス キー。 それぞれの関数の [管理 ] セクションを選択し、 関数キー または ホスト キーをコピーします。 詳細については、「アクセス キーの使用」を参照してください はい
認証 Azure関数の呼び出しに使用される認証方法。 サポートされている値は、 システム割り当てマネージド ID または "匿名" です。 はい
リソースID Azure関数のアプリ (クライアント) ID。 それぞれの関数の [認証] セクションに切り替え、[ID プロバイダー] でアプリ (クライアント) ID を取得します。 このプロパティは、システム割り当てマネージド ID を使用する場合に表示されます。 詳細については、Microsoft Entra ログインを使用するように App Service または Azure Functions アプリを構成する方法を参照してください。 いいえ*

/* システム割り当てマネージド ID 認証を使用する場合は、 resourceId プロパティが必要です。

システム割り当てマネージド ID 認証

システム割り当てマネージド ID (SAMI) 認証は、次の 2 つの方法で使用できます。

  • リソース ID を https://management.azure.com に設定します。 Data Factory は、システム割り当てマネージド ID を使用して Function App に接続し、匿名認証を使用して関数アプリを実行します。

  • 匿名認証を使用しない安全な環境では、リソース ID としてサービス プリンシパル名 (SPN) を構成します。 関数アプリで SPN を正しく構成する必要があります。

    1. サービス プリンシパル ID として新しいアプリ登録を作成します。

    2. 関数アプリで、[設定] の [認証] セクションに移動し、ID プロバイダーを作成します。

    3. [特定のクライアント アプリケーションからの許可された要求] セクションに ADF アプリケーション ID を追加し、[特定の識別からの要求を許可する] セクションのオブジェクト ID を追加します。 アプリケーション ID とオブジェクト ID は、次の手順で確認できます。

      1. Azure ポータル
      2. エンタープライズ アプリケーションに移動する
      3. Azure Data Factory/マネージド アイデンティティ 名を検索します。
      4. テーブルで見つかったオブジェクト ID とアプリケーション ID をコピーします。

      アプリケーション ID とオブジェクト ID を入力するボックスを示すアプリの登録のスクリーンショット。

Azure関数アクティビティ

プロパティ 説明 指定できる値 必須
名前 パイプラインのアクティビティの名前。 ストリング はい
タイプ アクティビティの種類は "AzureFunctionActivity" です ストリング はい
リンクされたサービス 対応する Azure Function App のAzure関数のリンクされたサービス リンクされたサービスの参照 はい
関数名 このアクティビティが呼び出す Azure Function App 内の関数の名前 ストリング はい
メソッド 関数呼び出しのための REST API メソッド 文字列がサポートされている型:"GET"、"POST"、"PUT" はい
ヘッダー 要求に送信されるヘッダー。 たとえば、要求に種類と言語を設定する場合: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } 文字列 (または文字列の resultType を含む式) いいえ
本文 要求と共に関数APIメソッドに送信されるリクエストボディ 文字列 (または文字列の resultType を含む式) またはオブジェクト。 PUT/POST メソッドには必須です

要求ペイロードのスキーマ」セクションにある要求ペイロードのスキーマを参照してください。

ルーティングとクエリ

Azure関数アクティビティは、routing をサポートします。 たとえば、Azure関数にエンドポイント https://functionAPP.azurewebsites.net/api/<functionName>/<value>?code=<secret> がある場合、Azure関数アクティビティで使用する functionName<functionName>/<value> です。 実行時に任意のfunctionNameを提供するようこの関数をパラメーター化できます。

注意

Durable Functions の functionName は、ルーティング情報を含めるために、関数のバインドの JSON 定義内にある route プロパティから取得する必要があります。 ルートの詳細が含まれていない functionName を使用するだけで、関数アプリが見つからないため、エラーが発生します。

Azure関数アクティビティでは、queries もサポートされます。 クエリは functionName の一部として含まれている必要があります。 たとえば、関数名が HttpTriggerCSharp で、含めるクエリが name=hello の場合、Azure関数アクティビティで functionNameHttpTriggerCSharp?name=hello として構築できます。 この関数は、実行時に値を決定できるように、パラメーター化できます。

タイムアウトと長時間実行関数

Azure Functions設定で構成した functionTimeout 設定に関係なく、230 秒後にタイムアウトになります。 詳細については、 こちらの記事を参照してください。 この動作を回避するには、非同期パターンに従うか、Durable Functionsを使用します。 Durable Functionsの利点は、独自の状態追跡メカニズムを提供するため、独自の状態追跡を実装する必要がないようにすることです。

Durable Functionsの詳細についてはこの記事を参照してください。 durable 関数を呼び出すAzure関数アクティビティを設定できます。この関数は、この例など、別の URI を持つ応答を返します。 statusQueryGetUriは関数の実行中に HTTP ステータス 202 を返すため、Web アクティビティを使用して、関数の状態をポーリングできます。 Web アクティビティの url フィールドを @activity('<AzureFunctionActivityName>').output.statusQueryGetUri に設定します。 Durable 関数が完了すると、関数の出力は Web アクティビティの出力になります。

サンプル

Azure関数を使用して tar ファイルの内容を抽出するサンプルhere

サポートされているアクティビティの詳細については、「パイプラインとアクティビティ」を参照してください。