我正在使用ARM模板来尝试部署对Azure Service Bus主题的订阅,该订阅将基于“收件人”系统属性来过滤消息。我想从ARM模板参数中提取过滤器的值,但是我似乎无法获取模板来解析SqlExpression中的参数。
下面是我一直在使用的模板。我以为我也许可以拨动requirePreprocessing开关来解决部署时的问题,但不要掷骰子。我还尝试过使用方括号或冒号将其转义,如以下链接所示
{
"apiVersion": "2017-04-01",
"name": "[concat(parameters('mynamespace'), '/', parameters('topic'), '/', parameters('myVariable'),'/direct')]",
"type": "Microsoft.ServiceBus/namespaces/topics/subscriptions/rules",
"dependsOn": [
"[resourceId('Microsoft.ServiceBus/namespaces', parameters('mynamespace'))]",
"[resourceId('Microsoft.ServiceBus/namespaces/topics', parameters('mynamespace'), parameters('topic'))]",
"[resourceId('Microsoft.ServiceBus/namespaces/topics/subscriptions', parameters('mynamespace'), parameters('topic'), parameters('myVariable'))]"
],
"properties": {
"filterType": "SqlFilter",
"sqlFilter": {
"sqlExpression": "sys.To=[parameters('myVariable')] OR sys.To IS NULL",
"requiresPreprocessing": true
}
}
我得到的是与sqlExpression中显示的字符串完全相同的字符串,但是我想在单引号字符串中获取变量解析为的值。
答案 0 :(得分:0)
此主题订阅规则只能获取静态值。也许您可以尝试使用静态值而不是[parameters('myVariable')]
。该问题可能是由于为属性sys.To
提供了动态值。
答案 1 :(得分:0)
您可以使用:"[concat('sys.To=',[parameters('myVariable')],' OR sys.To IS NULL')]"
。
我认为您不能在ARM模板中使用内联表达式,因此您应该使整个事情成为一个表达式,在这种情况下,请使用concat将各部分粘合在一起。
提示:很难包含单引号,因此像这样的变量可能会派上用场:
"SQ": "'"