【问题标题】:How to run azure function deployed on portal manually via Kudu Api dynamically?如何通过 Kudu Api 动态运行部署在门户上的 Azure 功能?
【发布时间】:2017-10-25 09:30:12
【问题描述】:

我在门户上部署了一个时间触发 Azure 功能。它每天上午 10:00 运行。但是,现在要求函数也应该在其他时间动态调用和运行。

我知道如何使用here 中提到的答案中的步骤通过 Kudu Api 动态设置 function.json 文件中的触发器。因此,使用这些步骤,我可以设置下一分钟的触发器并运行该功能。

但这不是实时的,这似乎是一种解决方法。有没有直接通过api直接调用和手动运行azure函数的方法?

【问题讨论】:

  • 为什么不添加基于例如消息队列的触发器,并将其用作函数的额外触发器?
  • 但是混合工作。我的功能是真正意义上的时间触发,我可以添加队列触发吗?还是我理解错了
  • 不确定混合是否有效。如果没有,则将功能逻辑提取到一个方法中,并从两个函数中调用它:一个是及时触发的,另一个是使用 MessageQueue 触发器。

标签: azure azure-functions azure-sdk


【解决方案1】:

难道没有直接通过api直接调用和手动运行azure函数的方法吗?

我们可以使用 REST API 触发已部署的 Azure 函数。我使用 Time Trigger C# Azure 函数对其进行测试。

Post  https://{FunctionAppName}.azurewebsites.net/admin/functions/{functionName}

注意: 我是从 Azure 门户跟踪的,我没有找到任何官方文档提到这个,如果你想在产品环境中使用这个 API,请多加注意。

我们需要 x-functions-key 作为标题。我们可以从函数 Application 中获取函数键。

我们也可以使用不记名令牌作为授权,关于如何获得这个Rest API的授权请参考另一个SO thread

更新:

添加正文信息。

【讨论】:

  • 谢谢。很有意思!但不幸的是,即使在使用适当的授权后,我仍然会收到未经授权的 401。
  • 您介意分享一下获得授权的方式吗?
  • 我尝试了两种方式。首先使用 x-function-key,然后使用不记名令牌。但都没有成功。我还缺少其他设置吗?您是否在 Body 中发送任何内容(在邮递员的屏幕截图中,看起来像那样)?
  • 谢谢。尝试后会在这里ping。
  • 再更新一次:它是x-functions-key 而不是x-function-key。我无法编辑答案,因为它需要超过 6 个已编辑字符才能保存编辑
【解决方案2】:

对于上述要求,我的建议是创建两个共享相同逻辑的函数(如果是 CSX,则可以通过使用 #load 导入通用实现或添加对通用程序集的引用,或者通过具有通用类型)。

您将有一个函数使用计时器触发器,而另一个函数使用不同的触发器类型,使您能够按需调用函数,而无需依赖任何 Kudu 或 Admin API(例如 HTTP、队列、SB 等)。 ),函数入口点(你的 Run 方法)只会调用你引入的公共逻辑。

【讨论】:

  • 制作另一个功能意味着很少的额外费用、很少的额外实施时间和额外的维护工作。当我们在门户中打开任何功能时,我们在那里有“运行”按钮,所以我很好奇是否可以使用自定义应用程序中的自定义按钮来实现相同的功能,单击哪个触发或运行该功能。是的,你的建议很有道理,我肯定也会朝这个方向思考。
猜你喜欢
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2020-09-23
  • 2023-02-22
  • 1970-01-01
  • 2021-11-05
  • 2015-02-20
相关资源
最近更新 更多