【问题标题】:How to populate Azure SignalR Service's upstream code in Bicep如何在二头肌中填充 Azure SignalR 服务的上游代码
【发布时间】:2022-10-13 15:14:46
【问题描述】:

我有一个二头肌模板,可根据以下脚本创建 Azure SignalR 服务。如何在二头肌模板中获取上游的code 值并根据它填充urlTemplate 的代码值?(关键字 TBD 显示了以下代码中的确切位置。)

targetScope = 'resourceGroup'
param location string = resourceGroup().location
param signalRName string

resource signalR 'Microsoft.SignalRService/signalR@2022-02-01' = {
  name: signalRName
  location: location
  kind: 'SignalR'
  sku: {
    name: 'Free_F1'
    tier: 'Free'
    capacity: 1
  }
  properties: {
    features: [
      {
        flag: 'ServiceMode'
        value: 'Serverless'
      }
      {
        flag: 'EnableConnectivityLogs'
        value: 'true'
      }
      {
        flag: 'EnableMessagingLogs'
        value: 'true'
      }
      {
        flag: 'EnableLiveTrace'
        value: 'true'
      }
    ]
    liveTraceConfiguration: {
      enabled: 'true'
      categories: [
        {
          name: 'ConnectivityLogs'
          enabled: 'true'
        }
        {
          name: 'MessagingLogs'
          enabled: 'true'
        }
        {
          name: 'HttpRequestLogs'
          enabled: 'true'
        }
      ]
    }
    cors: {
      allowedOrigins: [
        '*'
      ]
    }
    upstream: {
      templates: [
        {
          hubPattern: '*'
          eventPattern: '*'
          categoryPattern: '*'
          auth: {
            type: 'None'
          }
          urlTemplate: 'https://${signalRName}.azurewebsites.net/runtime/webhooks/signalr?code=TBD'
        }
      ]
    }
  }
}

【问题讨论】:

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


    【解决方案1】:

    我假设您正在使用与您的 signalR 服务同名的函数应用程序。

    看着documentation

    • 网址总是这样<Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>
    • API_KEY 是一个名为signalr_extension 的函数应用系统键。

    因此,您应该能够检索密钥并像这样使用它:

    var signalRKey = listKeys(resourceId('Microsoft.Web/sites/host', signalRName, 'default'), '2022-03-01').systemkeys.signalr_extension
    
    resource signalR 'Microsoft.SignalRService/signalR@2022-02-01' = {
      name: signalRName
      ...
      properties: {
        ...
        upstream: {
          templates: [
            {
              ...
              urlTemplate: 'https://${signalRName}.azurewebsites.net/runtime/webhooks/signalr?code=${signalRKey}'
            }
          ]
        }
      }
    }
    

    【讨论】:

    • 但是有一个问题:我在创建信号器资源之前在二头肌中创建函数应用程序(当然声明了依赖项)。 <API_KEY> 或 signalr_extension 未填充并在 azure 门户上显示。由于这种缺失,创建 signalR 资源失败。
    • 是的,一旦部署代码,就会创建 signalr_extension。
    • 所以,从技术上讲,我在运行二头肌模板时无法填充urlTemplate,可以吗?在这种情况下,这将是通过门户设置信号器扩展的手动过程,对吗?
    • 更新了我的答案
    • 好的,然后尝试使用 linux
    猜你喜欢
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    相关资源
    最近更新 更多