通过 Http Trigger 将新的输入数据发送到已经运行的 Orchestrator 功能

Posted

技术标签:

【中文标题】通过 Http Trigger 将新的输入数据发送到已经运行的 Orchestrator 功能【英文标题】:Send new input data to already running Orchestrator function via Http Trigger 【发布时间】:2021-06-17 00:59:44 【问题描述】:

我目前正在构建一个通过 Http 触发器触发的 Azure 持久函数。在将初始请求发送到 Http Trigger 时,我包含一个 API 令牌,然后将其作为输入传递给 Orchestrator,Orchestrator 将该令牌传递给活动。现在我注意到这个令牌有时会在 Orchestrator 完成之前过期的问题,从而产生身份验证问题。

我已经每隔几分钟轮询一次初始 Http 触发器并使用 DurableOrchestrationClient.get_status() 方法检索 Orchestrator 的状态,所以我想知道我是否可以通过 Http 触发器以某种方式将新令牌传递给正在运行的 Orchestrator 每次我正在做这样的投票。 这将解决我的身份验证问题。

查看文档似乎没有简单地传递新输入的功能,到目前为止我发现的只是创建可以发送到正在运行的协调器的外部事件的选项。详见此链接:https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-instance-management?tabs=python#send-events-to-instances

这是我最好的解决方法吗?

【问题讨论】:

增加令牌超时时间 (docs.microsoft.com/en-us/azure/active-directory/develop/…) 或使用 refresh token 代替 new token 如果当前无法修改,请考虑创建具有更长超时时间的新特殊令牌,否则看起来过于复杂 【参考方案1】:

我会避免依赖外部方传递新令牌,Orchestrator 不应该依赖此类调用来成功完成。

假设您使用 Azure Active Directory 或类似系统,我的建议是使用 On Behalf Flow。您将向 Orchestrator 发送一个初始 API 令牌,同时验证对 Orchestrator 的调用。然后,您使用此令牌为您的下游服务获取新令牌。这样,您还将收到可用于获取新访问令牌的刷新令牌。

如果您不希望/不需要使用初始 API 令牌对 Orchestrator 调用进行身份验证,您还可以按照 cmets 中 cetver 的建议传入刷新令牌。

在此示例中:“Web API A”将是您的 Orchestrator:

【讨论】:

以上是关于通过 Http Trigger 将新的输入数据发送到已经运行的 Orchestrator 功能的主要内容,如果未能解决你的问题,请参考以下文章

将新的 plist 文件添加到 iOS 应用程序

jQuery Address 将新的深层链接附加到现有的深层链接

通过jmeter发送测试结果邮件

将新的 UITextView 动态添加到 UIscrollView

将新键值添加到 Connection.query 结果

如何将新的 SSL 证书和密钥注入正在运行的 Node http.Server?