listKeys() 中的 copyIndex()

copyIndex() inside a listKeys()

我们正在尝试部署一个 ARM 模板,该模板使用 n 事件中心输出部署流分析作业,具体取决于输入参数。 现在,除了 outputs 属性 复制循环函数中的 listKeys() 函数外,我们都取得了成功,该函数获取每个事件中心的主键:

"sharedAccessPolicyKey": "[listKeys(resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('clientEventHubNamespace'), parameters('clients')[copyIndex('outputs')].id, variables('clientEventHubClientSharedAccessName')), '2015-08-01').primaryKey]"

我们收到错误:

17:44:31 - Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'The template resource 'tailor-router-axgf7t3gtspue' at line '129' and column '10' is not valid: The template function 'copyIndex' is not expected at this location. The function can only be used in a resource with copy specified. Please see https://aka.ms/arm-copy for usage details.. Please see https://aka.ms/arm-template-expressions for usage details.'.

但是,如果我们将其更改为特定索引:

"sharedAccessPolicyKey": "[listKeys(resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('clientEventHubNamespace'), parameters('clients')[0].id, variables('clientEventHubClientSharedAccessName')), '2015-08-01').primaryKey]"

有效。

listKeys() 中的 copyIndex('propertyName') 是受支持的函数吗? 如果没有,是否有可以达到相同效果的解决方法?

亲切的问候,

尼克


流分析作业资源定义:

{
  "apiVersion": "2016-03-01",
  "type": "Microsoft.StreamAnalytics/StreamingJobs",
  "name": "[variables('routerStreamAnalyticsName')]",
  "location": "[variables('location')]",
  "dependsOn": [ "clientsEventHubCopy" ],
  "tags": {
    "boundedContext": "[variables('boundedContextName')]"
  },
  "properties": {
    "sku": {
      "name": "[parameters('routerStreamAnalyticsSkuTier')]"
    },
    "outputErrorPolicy": "drop",
    "eventsOutOfOrderPolicy": "adjust",
    "eventsOutOfOrderMaxDelayInSeconds": 0,
    "eventsLateArrivalMaxDelayInSeconds": 5,
    "dataLocale": "en-US",
    "compatibilityLevel": "1.0",
    "inputs": [
      {
        "name": "input0",
        "properties": {
          "type": "stream",
          "serialization": {
            "type": "Avro"
          },
          "datasource": {
            "type": "Microsoft.ServiceBus/EventHub",
            "properties": {
              "serviceBusNamespace": "[parameters('input0EventHubNamespace')]",
              "sharedAccessPolicyName": "[parameters('input0EventHubSharedAccessPolicyName')]",
              "sharedAccessPolicyKey": "[parameters('input0EventHubSharedAccessPolicyKey')]",
              "eventHubName": "[parameters('input0EventHubName')]"
            }
          }
        }
      }
    ],
    "transformation": {
      "name": "routing",
      "properties": {
        "streamingUnits": "[parameters('routerStreamAnalyticsSkuTier')]",
        "query": "omitted"
      }
    },
    "copy": [
      {
        "name": "outputs",
        "count": "[length(parameters('clients'))]",
        "input": {
          "name": "[parameters('clients')[copyIndex('outputs')].id]",
          "properties": {
            "datasource": {
              "type": "Microsoft.ServiceBus/EventHub",
              "properties": {
                "serviceBusNamespace": "[variables('clientEventHubNamespace')]",
                "sharedAccessPolicyName": "[variables('clientEventHubClientSharedAccessName')]",
                "sharedAccessPolicyKey": "[listKeys(resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('clientEventHubNamespace'), parameters('clients')[copyIndex('outputs')].id, variables('clientEventHubClientSharedAccessName')), '2015-08-01').primaryKey]",
                "eventHubName": "[parameters('clients')[copyIndex('outputs')].id]"
              }
            },
            "serialization": {
              "type": "Avro"
            }
          }
        }
      }
    ]
  }
},

感谢您报告此事,对于给您带来的不便,我们深表歉意。 我刚和 ARM 团队谈过,当 copyindex 位于索引标签内时我们遇到了问题,例如 'array[copyindex()]'。现在应该修复了。

让我们知道进展如何。

谢谢,

JS - Azure 流分析