Azure 数据工厂中的 Azure 函数活动
适用于:Azure 数据工厂 Azure Synapse Analytics
通过 Azure 函数活动可以在 Azure 数据工厂或 Synapse 管道中运行 Azure Functions。 若要运行 Azure 函数,必须创建链接服务连接。 然后,可以将链接服务与指定计划执行的 Azure 函数的活动一起使用。
使用 UI 创建 Azure 函数活动
若要在管道中使用 Azure 函数活动,请完成以下步骤:
展开“管道活动”窗格的“Azure 函数”部分,并将 Azure 函数活动拖到管道画布上。
如果尚未选择画布上的新 Azure 函数活动,请选择它及其“设置”选项卡,以编辑其详细信息。
如果尚未定义 Azure 函数链接服务,请选择“新建”,创建新服务。 在新的 Azure 函数链接服务窗格中,选择现有的 Azure 函数应用 URL 并提供函数密钥。
选择 Azure 函数链接服务之后,提供函数名称和其他详细信息来完成配置。
Azure 函数链接服务
Azure 函数的返回类型必须是有效的 JObject
。 (请记住:JArray 不是 JObject
。)除了 JObject
之外的任何返回类型都将失败,并且会引发用户错误响应内容不是有效的 JObject。
函数密钥提供了对函数名称的安全访问,其中每个函数在函数应用中都有单独的唯一密钥或主密钥。 托管标识提供对整个函数应用的安全访问。 用户需要提供密钥才能访问函数名称。 有关函数访问密钥的更多详细信息,请参阅函数文档
属性 | 说明 | 必需 |
---|---|---|
类型 | type 属性必须设置为:AzureFunction | 是 |
函数应用 URL | Azure 函数应用的 URL。 格式为 https://<accountname>.chinacloudsites.cn 。 在 Azure 门户中查看函数应用时,此 URL 是 URL 部分下的值 |
是 |
函数密钥 | Azure 函数的访问密钥。 单击相应函数的“管理”部分,并复制“函数密钥”或“主机密钥”。 在此处了解详细信息:Azure Functions HTTP 触发器和绑定 | 是 |
Authentication | 用于调用 Azure 函数的身份验证方法。 支持的值是“系统分配的托管标识”或“匿名”。 | 是 |
资源 ID | Azure Function 的应用(客户端)ID。 切换到相应函数的“身份验证”部分,并在“标识提供者”下获取应用(客户端)ID。 使用系统分配的托管标识时,将显示此属性。 有关详细信息,请参阅将应用服务或 Azure Functions 应用配置为使用 Microsoft Entra 登录。 | 否 |
注意
使用匿名身份验证时,请确保已在 Azure Function 端删除标识。
Azure 函数活动
属性 | 说明 | 允许的值 | 必需 |
---|---|---|---|
名称 | 管道中活动的名称 | String | 是 |
类型 | 活动的类型为“AzureFunctionActivity” | String | 是 |
链接服务 | 相应 Azure 函数应用的 Azure 函数链接服务 | 链接服务引用 | 是 |
函数名称 | 此活动在 Azure 函数应用中调用的函数的名称 | String | 是 |
方法 | 函数调用的 Rest API 方法 | 字符串支持的类型:“GET”、“POST”、“PUT” | 是 |
标头 | 发送到请求的标头。 例如,若要在请求中设置语言和类型:"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } | 字符串(或带有 resultType 字符串的表达式) | 否 |
正文 | 随请求一起发送到函数 API 方法的正文 | 字符串(或带有 resultType 字符串的表达式)或对象。 | PUT/POST 方法所必需 |
请参阅请求有效负载架构部分中的请求有效负载架构。
路由和查询
Azure 函数活动支持路由。 例如,如果你的 Azure 函数具有终结点 https://functionAPP.chinacloudsites.cn/api/<functionName>/<value>?code=<secret>
,则要在 Azure 函数活动中使用的 functionName
是 <functionName>/<value>
。 你可以将此函数参数化以在运行时提供所需的 functionName
。
注意
Durable Functions 的 functionName
应取自 JSON 定义中函数绑定的 route 属性,以包含其路由信息。 只使用 functionName
未包含路由详细信息会导致失败,因为找不到函数应用。
Azure 函数活动还支持查询。 查询必须包含在 functionName
中。 例如,当函数名称为 HttpTriggerCSharp
并且要包括的查询为 name=hello
时,无法将 Azure 函数活动中的 functionName
构造为 HttpTriggerCSharp?name=hello
。 可以将此函数参数化,以便在运行时确定值。
超时和长时间运行的函数
Azure Functions 会在 230 秒之后超时,无论在设置中配置的 functionTimeout
设置如何。 有关详细信息,请参阅此文章。 若要解决此行为,请遵循某个异步模式或使用 Durable Functions。 Durable Functions 的好处是,它们提供自己的状态跟踪机制,因此无需实现你自己的状态跟踪。
在此文章中详细了解 Durable Functions。 你可以设置 Azure 函数活动来调用持久函数,这将返回具有不同 URI 的响应,例如此示例。 因为 statusQueryGetUri
在函数正在运行时返回 HTTP 状态 202,因此你可以使用 Web 活动轮询函数的状态。 设置一个 Web 活动并将 url
字段设置为 @activity('<AzureFunctionActivityName>').output.statusQueryGetUri
。 当持久函数完成时,该函数的输出将是 Web 活动的输出。
示例
可以在此处找到使用 Azure Functions 提取 tar 文件内容的示例。
相关内容
可在管道与活动中详细了解受支持的活动。