Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
适用于:
Azure Data Factory
Azure Synapse Analytics
Web 活动可用于从Azure Data Factory或 Synapse 管道调用自定义 REST 终结点。 可以传递数据集和链接服务以供活动使用和访问。
注意事项
Web 活动支持使用自托管集成运行时调用托管在专用虚拟网络中的 URL。 该集成运行时应可以看到 URL 终结点。
注意事项
支持的最大输出响应负载大小为 4 MB。
使用 UI 创建 Web 活动
若要在管道中使用 Web 活动,请完成以下步骤:
在管道“活动”窗格中搜索“Web”,然后将 Web 活动拖动到管道画布上。
选择画布上的新 Web 活动(如果尚未选择)及其 “设置 ”选项卡以编辑其详细信息。
指定一个 URL,它可以是文本 URL 字符串,也可以是动态表达式、函数、系统变量或其他活动的输出的任意组合。 提供要与请求一起提交的其他详细信息。
将活动的输出用作任何其它活动的输入,并在目标活动中支持动态内容的任何位置引用输出。
语法
{
"name":"MyWebActivity",
"type":"WebActivity",
"typeProperties":{
"method":"Post",
"url":"<URLEndpoint>",
"httpRequestTimeout": "00:01:00"
"connectVia": {
"referenceName": "<integrationRuntimeName>",
"type": "IntegrationRuntimeReference"
}
"headers":{
"Content-Type":"application/json"
},
"authentication":{
"type":"ClientCertificate",
"pfx":"****",
"password":"****"
},
"datasets":[
{
"referenceName":"<ConsumedDatasetName>",
"type":"DatasetReference",
"parameters":{
...
}
}
],
"linkedServices":[
{
"referenceName":"<ConsumedLinkedServiceName>",
"type":"LinkedServiceReference"
}
]
}
}
类型属性
| 属性 | 说明 | 允许的值 | 必需 |
|---|---|---|---|
| 名称 | Web 活动的名称 | 字符串 | 是 |
| 类型 | 必须设置为 WebActivity。 | 字符串 | 是 |
| 方法 | 目标终结点的 REST API 方法。 | 字符串。 支持的类型:“GET”、“POST”、“PUT”、“PATCH”、“DELETE” |
是 |
| url | 目标终结点和路径 | 字符串(或带有 "resultType" 字符串的表达式)。 如果活动未收到来自终结点的响应,活动将在 1 分钟内超时,并出现错误。 可以通过更新 httpRequestTimeout 属性来将此响应超时增加最多 10 分钟 | 是 |
| HTTP 请求超时 (httpRequestTimeout) | 响应超时时间 | hh:mm:ss,其最大值为 00:10:00。 如果未显式指定,则默认值为 00:01:00 | 否 |
| headers | 发送到请求的标头。 例如,要在请求中设置语言和类型:"headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }。 |
字符串(或带有 resultType 字符串的表达式) | 否 |
| body | 表示要发送到终结点的有效负载。 | 字符串(或带有 "resultType" 字符串的表达式)。 请参阅请求有效负载架构部分中的请求有效负载架构。 |
对于 POST/PUT/PATCH 方法是必需的。 对于 DELETE 方法是可选项。 |
| 身份验证 | 用于调用该终结点的身份验证方法。 支持的类型是“基本、客户端证书、系统分配的托管标识、用户分配的托管标识、服务主体”。有关详细信息,请参阅身份验证部分。 如果不需要身份验证,请排除此属性。 | 字符串(或带有 resultType 字符串的表达式) | 否 |
| turnOffAsync | 选项,可用于禁用在 HTTP 202 响应的响应头中对位置字段执行 HTTP GET。 如果设置为 true,它将停止对响应头中给定的 http 位置调用 HTTP GET。 如果设置为 false,它将继续对 http 响应头中给定的位置调用 HTTP GET。 | 允许的值为 false(默认)和 true 。 | 否 |
| disableCertValidation(禁用证书验证) | 删除服务器端证书验证(不建议这样做,除非您连接到不使用标准 CA 证书的受信任服务器)。 | 允许的值为 false(默认)和 true 。 | 否 |
| 数据集 | 传递给终结点的数据集列表。 | 数据集引用数组。 可以是空数组。 | 是 |
| linkedServices | 传递给终结点的链接服务列表。 | 关联的服务引用数组。 可以是空数组。 | 是 |
| connectVia | 用于连接到数据存储的集成运行时。 可以使用Azure集成运行时或自承载集成运行时(如果数据存储位于专用网络中)。 如果未指定此属性,服务将使用默认Azure集成运行时。 | 集成运行时引用。 | 否 |
注意事项
Web 活动调用的 REST 终结点必须返回 JSON 类型的响应。 如果活动未收到来自终结点的响应,活动将在 1 分钟内超时,并出现错误。 ** 对于支持 异步请求-回复模式的终结点,Web 活动会继续等待,而不会超时(最多等待 7 天),或者直到终结点发出完成作业的信号为止。
下表显示了 JSON 上下文的要求:
| 值类型 | 请求正文 | 响应正文 |
|---|---|---|
| JSON 对象 | 支持 | 支持 |
| JSON 数组 | 已支持 (目前,JSON 数组由于 bug 而不起作用。修复正在进行中。 |
不支持 |
| JSON 值 | 支持 | 不支持 |
| 非 JSON 类型 | 不支持 | 不支持 |
身份验证
下面是 Web 活动中支持的身份验证类型。
无
如果不需要身份验证,请不要包含“authentication”属性。
基本
指定用户名和密码以用于基本身份验证。
"authentication":{
"type":"Basic",
"username":"****",
"password":"****"
}
客户端证书
指定 base64 编码的 PFX 文件内容和密码。
"authentication":{
"type":"ClientCertificate",
"pfx":"****",
"password":"****"
}
证书需要是 x509 证书。 若要转换为 PFX 文件,可以使用你喜欢的实用工具。 对于 base-64 编码,可以使用以下 PowerShell 代码片段。
$fileContentBytes = get-content 'enr.dev.webactivity.pfx' -AsByteStream
[System.Convert]::ToBase64String($fileContentBytes) | Out-File 'pfx-encoded-bytes.txt'
托管身份
使用数据工厂或 Synapse 工作区实例的托管标识来指定要请求访问令牌的资源 URI。 若要调用Azure资源管理 API,请使用 https://management.chinacloudapi.cn/。 有关托管标识的工作原理的详细信息,请参阅 Azure 资源概述页的 托管标识页。
"authentication": {
"type": "MSI",
"resource": "https://management.chinacloudapi.cn/"
}
服务主体
指定租户 ID、服务主体 ID 和服务主体密钥,并使用安全字符串作为客户端机密。
"authentication": {
"type": "ServicePrincipal",
"tenant": "your_tenant_id",
"servicePrincipalId": "your_client_id",
"servicePrincipalKey": {
"type": "SecureString",
"value": "your_client_secret"
},
"resource": "https://management.chinacloudapi.cn/"
}
请求负载模式
当使用 POST/PUT 方法时,正文属性表示发送到终结点的有效负载。 可以将链接服务和数据集作为有效负载的一部分进行传递。 下面是有效负载的架构:
{
"body": {
"myMessage": "Sample",
"datasets": [{
"name": "MyDataset1",
"properties": {
...
}
}],
"linkedServices": [{
"name": "MyStorageLinkedService1",
"properties": {
...
}
}]
}
}
示例
在此示例中,管道中的 Web 活动调用了 REST 终结点。 它将Azure SQL链接服务和Azure SQL数据集传递给终结点。 REST 终结点使用 Azure SQL 连接字符串连接到逻辑 SQL 服务器,并返回 SQL 服务器实例的名称。
管道定义
{
"name": "<MyWebActivityPipeline>",
"properties": {
"activities": [
{
"name": "<MyWebActivity>",
"type": "WebActivity",
"typeProperties": {
"method": "Post",
"url": "@pipeline().parameters.url",
"headers": {
"Content-Type": "application/json"
},
"authentication": {
"type": "ClientCertificate",
"pfx": "*****",
"password": "*****"
},
"datasets": [
{
"referenceName": "MySQLDataset",
"type": "DatasetReference",
"parameters": {
"SqlTableName": "@pipeline().parameters.sqlTableName"
}
}
],
"linkedServices": [
{
"referenceName": "SqlLinkedService",
"type": "LinkedServiceReference"
}
]
}
}
],
"parameters": {
"sqlTableName": {
"type": "String"
},
"url": {
"type": "String"
}
}
}
}
管道参数值
{
"sqlTableName": "department",
"url": "https://adftes.chinacloudsites.cn/api/execute/running"
}
Web 服务终结点代码
[HttpPost]
public HttpResponseMessage Execute(JObject payload)
{
Trace.TraceInformation("Start Execute");
JObject result = new JObject();
result.Add("status", "complete");
JArray datasets = payload.GetValue("datasets") as JArray;
result.Add("sinktable", datasets[0]["properties"]["typeProperties"]["tableName"].ToString());
JArray linkedServices = payload.GetValue("linkedServices") as JArray;
string connString = linkedServices[0]["properties"]["typeProperties"]["connectionString"].ToString();
System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(connString);
result.Add("sinkServer", sqlConn.DataSource);
Trace.TraceInformation("Stop Execute");
return this.Request.CreateResponse(HttpStatusCode.OK, result);
}
相关内容
参阅支持的其他控制流活动: