【问题标题】:How to pass input parameters to azure python3 runbook from adf webhook activity如何从 adf webhook 活动将输入参数传递给 azure python3 Runbook
【发布时间】:2021-07-27 10:18:06
【问题描述】:

我想将 azure 数据工厂管道 webhook 活动中的参数传递到我的 azure 自动化 python Runbook。 我该怎么做?

【问题讨论】:

  • 你介意在数据工厂中使用网络活动而不是网络钩子吗?

标签: python azure-data-factory azure-automation azure-runbook


【解决方案1】:

针对这个问题,我在自己这边测试了一下,发现很难通过数据工厂管道中的webhook活动请求python runbook。我在 Runbook 中的 python 代码如下所示:

#!/usr/bin/env python3

import sys
import re
import json
from urllib import parse

def fixJSON(string):
  res = re.sub(r"([^{}:,]+):([^{}:,]+),?", r'"\1":"\2",', string )
  res = re.sub('"[ ]*,[ ]*}', '"}', res)
  # and empty string
  res = re.sub("\"(''|\")\"", '""', res)
  # property : {...}
  res = re.sub(r"([^{}:,]+)(?=:{)", r'"\1"', res )
  return res

print("===")

test = str(sys.argv[1])
jsonStr = fixJSON(test)

jsonStr = jsonStr.replace("\"\"", "\"")
print(jsonStr)

jsonData = json.loads(jsonStr)
print(jsonData["RequestBody"])

我用请求正文对其进行测试:

{
    "name":"hury"
}

如果我像下面的截图那样在邮递员中测试它(请求正文中没有换行符),它工作正常:

但是如果请求正文中有换行符(如下图所示),在 python runbook 中执行\r\n 时总是失败。不幸的是,我们似乎无法删除python runbook中的换行符(我用replace("\r\n", "")xxx.rstrip()等多种方式进行了测试,所有这些都不起作用)

如果我们只需要在邮递员中请求,我们可以设置请求正文不带换行符。但是如果我们在数据工厂的 webhook 活动中请求它,即使我只是将请求主体设置在一行中,请求主体似乎也会被格式化为换行符:

所以我建议你使用“Web”活动而不是“Webhook”活动,因为在“Web”活动中我们可以输入字符串而不是json数据作为请求正文。如果在“Webhook”活动中,它不允许我们在请求正文中输入无效的 json 数据。

【讨论】:

  • 继续说我还有一个问题。由于 azure python runbook 支持位置参数,是否真的可以将参数值从 ADF web 活动传递到 python runbook 中定义的 sys.argv 变量?
  • @Parul 抱歉,我不确定。位置参数是什么意思?据我所知,我们可以在powershell runbook中定义参数,但是我不知道如何在python runbook中定义参数。
  • 与 powershell 不同,我看不到任何可以通过它在 python runbook 中传递输入参数的选项。唯一的方法是通过“导入 sys”并使用 sys.argv 变量来获取可以在启动运行手册时在测试窗格中传递的参数值。我在下面提到了链接(使用输入参数)docs.microsoft.com/en-us/azure/automation/learn/…。此外,我的要求是使用 adf 将输入值传递给 python runbook。
猜你喜欢
  • 2021-12-01
  • 2020-10-30
  • 2020-06-14
  • 2018-06-12
  • 2022-12-07
  • 2014-10-30
  • 2023-04-10
  • 1970-01-01
  • 2015-12-07
相关资源
最近更新 更多