Azure Data Factory の Azure 関数アクティビティAzure Function activity in Azure Data Factory

Azure 関数アクティビティを使用すると、Data Factory パイプライン内で Azure Functions を実行できます。The Azure Function activity allows you to run Azure Functions in a Data Factory pipeline. Azure 関数を実行するには、リンクされたサービスの接続と、実行する Azure 関数を指定するアクティビティを作成する必要があります。To run an Azure Function, you need to create a linked service connection and an activity that specifies the Azure Function that you plan to execute.

この機能の概要とデモンストレーションについては、以下の 8 分間の動画を視聴してください。For an eight-minute introduction and demonstration of this feature, watch the following video:

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

Azure 関数の戻り値の型は、有効な JObject である必要があります。The return type of the Azure function has to be a valid JObject. (JArrayJObject では "ない" ことに留意してください。)JObject以外の戻り値の型が失敗し、ユーザー エラー応答コンテンツは有効な JObject ではないが発生します。(Keep in mind that JArray is not a JObject.) Any return type other than JObject fails and raises the user error Response Content is not a valid JObject.

プロパティProperty 説明Description 必須Required
typetype type プロパティは、次のように設定する必要があります:AzureFunctionThe type property must be set to: AzureFunction はいyes
function app urlfunction app url Azure 関数アプリの URL。URL for the Azure Function App. 形式は https://<accountname>.azurewebsites.net です。Format is https://<accountname>.azurewebsites.net. この URL は、Azure portal で関数アプリを表示した際に URL セクションに表示される値ですThis URL is the value under URL section when viewing your Function App in the Azure portal はいyes
function keyfunction key Azure 関数のアクセス キーです。Access key for the Azure Function. それぞれの関数の [管理] セクションをクリックし、ファンクション キーまたはホスト キーをコピーします。Click on the Manage section for the respective function, and copy either the Function Key or the Host key. 詳しくは、次の記事をご覧ください:Azure Functions の HTTP トリガーとバインドFind out more here: Azure Functions HTTP triggers and bindings はいyes

Azure 関数アクティビティAzure Function activity

プロパティProperty 説明Description 使用できる値Allowed values 必須Required
名前name パイプラインのアクティビティの名前。Name of the activity in the pipeline stringString はいyes
typetype アクティビティの種類は 'AzureFunctionActivity' ですType of activity is ‘AzureFunctionActivity’ stringString はいyes
linked servicelinked service 対応する Azure 関数アプリの、Azure 関数のリンクされたサービスThe Azure Function linked service for the corresponding Azure Function App リンクされたサービスの参照Linked service reference はいyes
function namefunction name このアクティビティによって呼び出される Azure 関数アプリ内の関数の名前Name of the function in the Azure Function App that this activity calls stringString はいyes
methodmethod 関数呼び出しのための REST API メソッドREST API method for the function call 文字列がサポートされている型:"GET"、"POST"、"PUT"String Supported Types: "GET", "POST", "PUT" はいyes
headerheader 要求に送信されるヘッダー。Headers that are sent to the request. たとえば、要求に種類と言語を設定する場合: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }For example, to set the language and type on a request: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } 文字列 (または文字列の resultType を含む式)String (or expression with resultType of string) いいえNo
bodybody 関数 API メソッドへの要求と共に送信される本文body that is sent along with the request to the function api method 文字列 (または文字列の resultType を含む式) またはオブジェクト。String (or expression with resultType of string) or object.  PUT/POST メソッドには必須ですRequired for PUT/POST methods

「 要求ペイロードのスキーマ 」セクションにある要求ペイロードのスキーマを参照してください。See the schema of the request payload in Request payload schema section.

ルーティングとクエリRouting and queries

Azure 関数アクティビティでは、ルーティングがサポートされます。The Azure Function Activity supports routing. たとえば、Azure 関数にエンドポイントhttps://functionAPP.azurewebsites.net/api/<functionName>/<value>?code=<secret>がある場合、その後でAzure 関数のアクティビティを使用する functionName<functionName>/<value>です。For example, if your Azure Function has the endpoint https://functionAPP.azurewebsites.net/api/<functionName>/<value>?code=<secret>, then the functionName to use in the Azure Function Activity is <functionName>/<value>. 実行時に任意のfunctionNameを提供するようこの関数をパラメーター化できます。You can parameterize this function to provide the desired functionName at runtime.

また、Azure 関数アクティビティではクエリがサポートされます。The Azure Function Activity also supports queries. クエリはfunctionNameの一部として含まなければなりません。A query has to be included as part of the functionName. たとえば、関数名がHttpTriggerCSharpであり含めるクエリはname=helloである場合、Azure 関数のアクティビティにおいてfunctionNameHttpTriggerCSharp?name=helloとして構築できます。For example, when the function name is HttpTriggerCSharp and the query that you want to include is name=hello, then you can construct the functionName in the Azure Function Activity as HttpTriggerCSharp?name=hello. この関数は、実行時に値を決定できるように、パラメーター化できます。This function can be parameterized so the value can be determined at runtime.

タイムアウトと長期関数Timeout and long running functions

Azure Functions は、設定で構成したfunctionTimeout設定に関係無く 230 秒後にタイムアウトします。Azure Functions times out after 230 seconds regardless of the functionTimeout setting you've configured in the settings. 詳細については、 こちらの記事を参照してください。For more information, see this article. この振る舞いを回避するには、非同期パターンに従うか Durable Functions を使用します。To work around this behavior, follow an async pattern or use Durable Functions. Durable Functions の利点は独自の状態追跡メカニズムを提供する点にあり、独自に実装する必要はありません。The benefit of Durable Functions is that they offer their own state-tracking mechanism, so you won't have to implement your own.

この記事で Durable Functions について詳しく説明します。Learn more about Durable Functions in this article. Azure 関数のアクティビティを設定して Durable 関数を呼び出すことができます。これにより、この例など異なる URI で応答を返します。You can set up an Azure Function Activity to call the Durable Function, which will return a response with a different URI, such as this example. statusQueryGetUriは関数の実行中に HTTP ステータス 202 を返すため、Web アクティビティを使用して、関数の状態をポーリングできます。Because statusQueryGetUri returns HTTP Status 202 while the function is running, you can poll the status of the function by using a Web Activity. Web アクティビティのurlフィールドを@activity('<AzureFunctionActivityName>').output.statusQueryGetUriに設定するだけです。Simply set up a Web Activity with the url field set to @activity('<AzureFunctionActivityName>').output.statusQueryGetUri. Durable 関数が完了したら、関数の出力は、Web アクティビティの出力になります。When the Durable Function completes, the output of the function will be the output of the Web Activity.

サンプルSample

Azure Functions を使用して tar ファイルのコンテンツを抽出する Data Factory のサンプルについては、こちらを参照してください。You can find a sample of a Data Factory that uses an Azure Function to extract the content of a tar file here.

次の手順Next steps

Azure Data Factory のパイプラインとアクティビティについて学習する。Learn more about activities in Data Factory in Pipelines and activities in Azure Data Factory.