azure - ARM 脚本无服务器 SignalR 以及函数应用程序的上游设置

标签 azure azure-functions signalr azure-resource-manager

我有一个带有上游设置的“无服务器”SignalR 资源,可以与支持功能应用程序进行通信。一切正常。问题是如何自动创建这些资源,因为两者之间似乎存在循环引用。

SignalR 上游设置需要来自 Function App 的“signalr_extension”应用程序 key 才能包含在上游 URL 模板中。相反,函数应用程序需要“AzureSignalRConnectionString”应用程序设置。因此出现了循环引用。

让事情变得复杂的是,“signalr_extension”应用程序 key 似乎仅在您将 SignalR 触发的函数部署到函数应用程序时才会创建。是否可以在 ARM 模板创建时在 Function App 中“手动”设置随机应用程序 key ,然后用于构建 SignalR 资源上游设置?

我尝试使用 listkeys/listsecrets 将正在运行的函数应用程序“转储”为 ARM 模板中的输出,但主机/应用程序 key 似乎并未公开。

是否可以编写脚本(使用 ARM 或 Azure CLI)来创建这些资源?

最佳答案

经过一些实验,我想我已经解决了这个问题。步骤如下:

  1. 在 ARM 模板中,创建 Function App 和 SignalR。使 Function App 依赖于(dependsOn)Signal。将 SignalR AzureSignalRConnectionString appsetting 注入(inject)到 Function App 中。

  2. 将函数代码部署到函数应用。

  3. 使用 Azure CLI 提取“signalr_extension”:

    az functionapp 键列表 --name --resource-group

  4. 获取生成的 systemKeys/signalr_extension 值并将其放入另一个 Azire CLI 命令中:

    az signalr 上游更新 --name --resource-group --template url-template="https://.azurewebsites.net/runtime/webhooks/signalr?code=<步骤 3 中的代码”

至少这一切都可以编写到 DevOps 管道中。

关于azure - ARM 脚本无服务器 SignalR 以及函数应用程序的上游设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68930466/

相关文章:

c# - 无法将 List<string> 从方法 1 传递到方法 2

azure - 使用 Azure 托管服务标识来扩展应用服务计划,但未列出

c# - Azure Function 无法与 QueueTrigger 和非 void 返回值一起使用?

c# - System.Timers.Timer在Azure辅助角色中徘徊

azure - 当所有测试用例都通过远程 powershell 作业运行时,如何将测试结果发布回同一个 azure 构建管道中

asp.net - 在 ASP.NET 5 应用程序中使用 SignalR 2

javascript - 如何在前端Javascript应用程序中订阅Azure SignalR服务?

c# - 当用户连接到集线器类时,公共(public)任务 Connect() 不会触发

c# - 使用负载均衡器的 ASP.NET 应用程序生命周期

.net - 如何将 Alexa 与 Azure Functions v4 结合使用