適用対象:
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 である必要があります。 (JArrayJObjectに注意してください)。JObject以外の戻り値の型は失敗し、ユーザー エラーが発生します。応答コンテンツは有効な JObject ではありません。
関数キーを使用すると、関数アプリ内で個別の一意のキーまたはマスター キーを持つ関数名に安全にアクセスできます。 マネージド ID は、関数アプリ全体への安全なアクセスを提供します。 ユーザーは、関数名にアクセスするためにキーを指定する必要があります。 関数アクセス キーの詳細については、関数のドキュメントを参照してください
| プロパティ | 説明 | 必須 |
|---|---|---|
| タイプ | type プロパティは、次のように設定する必要があります:AzureFunction | はい |
| 関数アプリの URL | Azure 関数アプリの URL。 形式は https://<accountname>.azurewebsites.net です。 この URL は、Azure portal で関数アプリを表示した際に 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 を正しく構成する必要があります。
関数アプリで、[設定] の [認証] セクションに移動し、ID プロバイダーを作成します。
許可されたクライアント アプリケーションでサービス プリンシパルのアプリケーション ID と、許可されたオブジェクト アプリケーションのサービス プリンシパルのオブジェクト ID を追加します。 要求が特定のテナントからのみ許可されている場合は、最後のボックスにマネージド ID のテナント ID を追加します。
Azure Functions アクティビティ
| プロパティ | 説明 | 指定できる値 | 必須 |
|---|---|---|---|
| 名前 | パイプラインのアクティビティの名前。 | String | はい |
| タイプ | アクティビティの種類は "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を提供するようこの関数をパラメーター化できます。
注意
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 ファイルのコンテンツを抽出するサンプルについては、こちらを参照してください。
関連するコンテンツ
サポートされているアクティビティの詳細については、「パイプラインとアクティビティ」を参照してください。