2017-06-06 1 views
0

Nous essayons de déployer un modèle ARM qui déploie un travail Stream Analytics avec n sorties de concentrateurs d'événements en fonction d'un paramètre d'entrée. En ce moment, nous allons avoir du succès avec tous, mais la fonction listKeys() dans la fonction de boucle de copie de la propriété outputs qui obtient chaque clé primaire de Hub événement:copyIndex() dans un listKeys()

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

Nous obtenons l'erreur:

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.'.

Cependant, si nous changeons ceci pour être un index spécifique:

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

cela fonctionne.

Est-ce que copyIndex('propertyName') à l'intérieur d'une listKeys() est une fonction prise en charge? Sinon, existe-t-il une solution de contournement qui permettrait d'obtenir le même effet?

Cordialement,

Nick


flux Analytics définition des ressources d'emploi:

{ 
    "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" 
      } 
      } 
     } 
     } 
    ] 
    } 
}, 
+0

'' est copyIndex ('propertyName') à l'intérieur d'un listKeys() une fonction prise en charge? Si ce n'est pas le cas, y a-t-il une solution de contournement qui aurait le même effet? »« Je fais un test et la même erreur apparaît, je vais continuer à étudier cette question. En outre, en guise de solution de contournement, vous pouvez essayer de créer plusieurs sections distinctes pour les sorties. –

+0

Merci @ FredHan-MSFT Pourriez-vous préciser «plusieurs sections séparées pour les sorties»? –

+0

'' Nous essayons de déployer un template ARM qui déploie un job Stream Analytics avec n sorties Event Hubs '' essayons de définir séparément pour ces n sorties Event Hubs. –

Répondre

1

Merci pour avoir signalé ce et désolé pour la gêne occasionnée. Je viens de parler à l'équipe ARM, nous avons eu un problème lorsque copyindex était dans les balises d'index, par exemple 'array [copyindex()]'. Cela devrait être réparé maintenant.

Dites-nous comment ça se passe.

Merci,

JS - Azure flux Analytics