Azure 数据工厂中的 Webhook 活动
适用于:Azure 数据工厂
Azure Synapse Analytics
Webhook 活动可通过自定义代码控制管道的执行。 使用 Webhook 活动,代码可以调用终结点并向其传递回叫 URL。 管道运行在继续下一个活动之前,会等待系统调用回调。
重要
WebHook 活动现在允许你将错误状态和自定义消息显示回活动和管道。 将“reportStatusOnCallBack”设置为 true,并在回调有效负载中包含“StatusCode”和“Error”。 有关详细信息,请参阅其他说明部分。
若要在管道中使用 Webhook 活动,请完成以下步骤:
在管道“活动”窗格中搜索“Webhook”,然后将 Webhook 活动拖动到管道画布上。
如果尚未选择画布上的新 Webhook 活动,请选择其“设置”选项卡,以编辑其详细信息。
指定 Webhook 的 URL,它可以是文本 URL 字符串,也可以是动态 表达式、函数、系统变量或其他活动的输出的任意组合。 提供要与请求一起提交的其他详细信息。
将活动的输出用作任何其它活动的输入,并在目标活动中支持动态内容的任何位置引用输出。
{
"name": "MyWebHookActivity",
"type": "WebHook",
"typeProperties": {
"method": "POST",
"url": "<URLEndpoint>",
"headers": {
"Content-Type": "application/json"
},
"body": {
"key": "value"
},
"timeout": "00:10:00",
"reportStatusOnCallBack": false,
"authentication": {
"type": "ClientCertificate",
"pfx": "****",
"password": "****"
}
}
}
属性 | 说明 | 允许的值 | 必需 |
---|---|---|---|
name | Webhook 活动的名称。 | 字符串 | 是 |
type | 必须设置为“WebHook”。 | 字符串 | 是 |
method | 目标终结点的 REST API 方法。 | 字符串。 支持的类型为“POST”。 | 是 |
url | 目标终结点和路径。 | 具有字符串的 resultType 值的字符串或表达式。 | 是 |
headers | 发送到请求的标头。 下面是一个示例,用于在请求中设置语言和类型:"headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" } 。 |
一个字符串或表达式,其 resultType 值为字符串。 | 是的。 需要 Content-Type 标题,如 "headers":{ "Content-Type":"application/json"} 。 |
body | 表示要发送到终结点的有效负载。 | 有效的 JSON,或 resultType 值为 JSON 的表达式。 请参阅请求有效负载架构,了解请求有效负载的架构。 | 是 |
身份验证 | 用于调用该终结点的身份验证方法。 支持的类型为“Basic”和“ClientCertificate”。 有关详细信息,请参阅身份验证。 如果不需要身份验证,则排除此属性。 | 一个字符串或表达式,其 resultType 值为字符串。 | 否 |
timeout | 活动会等待多长时间,以便系统调用 callBackUri 所指定的回调。 默认值为 10 分钟(“00:10:00”)。 值的 TimeSpan 格式为 d.hh:mm:ss。 | 字符串 | 否 |
回调时报告状态 | 允许用户报告 Webhook 活动的失败状态。 | 布尔 | 否 |
Webhook 活动支持以下身份验证类型。
如果不需要身份验证,请勿包括 authentication 属性。
指定与基本身份验证配合使用的用户名和密码。
"authentication":{
"type":"Basic",
"username":"****",
"password":"****"
}
指定 PFX 文件和密码的 Base64 编码内容。
"authentication":{
"type":"ClientCertificate",
"pfx":"****",
"password":"****"
}
使用数据工厂或 Synapse 工作区的托管标识来指定为其请求访问令牌的资源 URI。 若要调用 Azure 资源管理 API,请使用 https://management.chinacloudapi.cn/
。 有关如何托管标识工作原理的详细信息,请参阅 Azure 资源的托管标识概述。
"authentication": {
"type": "MSI",
"resource": "https://management.chinacloudapi.cn/"
}
该服务传递发送到 URL 终结点的主体中的附加属性“callBackUri”。 该服务希望在指定的超时值之前调用此 URI。 如果未调用此 URI,则活动会失败,其状态为“超时”。
只有当无法调用自定义终结点时,Webhook 活动才会失败。 任何错误消息都可以添加到回调正文,并在后续活动中使用。
对于每个 REST API 调用,如果终结点在一分钟内未响应,则客户端会超时。 此行为是标准的 HTTP 最佳做法。 若要解决此问题,请实施 202 模式。 在当前情况下,终结点返回“202 (已接受)”和客户端轮询。
请求的一分钟超时与活动超时无关。 后者用于等待 callbackUri 指定的回调。
传递回到回调 URI 的正文必须是有效 JSON。 将 Content-Type
标头设置为 application/json
。
使用 Report status on callback 属性时,必须在进行回调时将以下代码添加到正文中:
{
"Output": {
// output object is used in activity output
"testProp": "testPropValue"
},
"Error": {
// Optional, set it when you want to fail the activity
"ErrorCode": "testErrorCode",
"Message": "error message to show in activity error"
},
"StatusCode": "403" // when status code is >=400, activity is marked as failed
}
请参阅以下受支持的控制流活动: