2

Je viens de créer une fonction App simple avec une fonction qui doit être déclenchée lorsqu'un nouveau message est ajouté à la file d'attente.Déclencheur de file d'attente ServiceBus pour Azure Fonction: Gérer la réclamation est nécessaire pour cette opération

Je l'ai utilisé le "ServiceBusQueueTrigger - C#" modèle pour créer ma fonction de sorte que le code ressemble que:

using System; 
using System.Threading.Tasks; 

public static void Run(string myQueueItem, TraceWriter log) 
{ 
    log.Verbose($"C# ServiceBus queue trigger function processed message: {myQueueItem}"); 
} 

partir du portail Azure, j'ai eu cette erreur:

Microsoft.ServiceBus: The remote server returned an error: (401) Unauthorized. Manage claim is required for this operation. TrackingId:6e27fe40-f667-4230-9995-d09f2ac67f35_G17,TimeStamp:4/18/2016 10:17:41 PM. System: The remote server returned an error: (401) Unauthorized.

Azure Function Error - (401) Unauthorized - Manage claim is required for this operation.

au début, je l'ai mis en place ma chaîne de connexion avec une politique d'accès partagé qui permet seulement d'écouter la file d'attente et a changé à une réclamation Gérer mais je Toujours avoir cette erreur.

Pour résoudre ce problème, je devais établir la connexion avec le RootManageSharedAccessKey qui donnent un accès complet à l'espace de bus de service

Est-ce le comportement normal/désiré? Sera-t-il possible à l'avenir de configurer des chaînes de connexion avec différentes politiques d'accès partagé?

Répondre

2

La valeur par défaut AccessRights utilisée si elle n'est pas spécifiée est AccessRights.Manage. Vous pouvez remplacer ce utilisant l'éditeur de portail avancé, en spécifiant une valeur AccessRights plus restreint:

{ 
    "bindings": [ 
    { 
     "type": "serviceBusTrigger", 
     "direction": "in", 
     "accessRights": "listen", 
     "queueName": "samples-input" 
    } 
    ] 
} 

Nous devons exposer cette valeur via la première interface de portail de classe et pour le rendre plus facile à configurer.

+0

Matthew, quel est le but du paramètre 'accessRights'? en utilisant un webjob, nous n'avons pas besoin de spécifier quoi que ce soit de ce genre pour configurer le trigger du servicebus. – Thomas

+1

Oui, cela existe également dans le SDK de base. 'ServiceBusAttribute' a une propriété' AccessRights' qui peut être configurée. ce paramètre est juste mappage à cela. Nous avons ajouté cela dans la dernière version de WebJobs SDK, parce que les gens voulaient avoir la possibilité d'utiliser des chaînes de connexion avec un accès limité. Auparavant, nous supposions toujours que nous avions 'Manage 'et que nous essayions des opérations qui échouaient. – mathewc

+0

Merci, j'y jetterai un coup d'œil ^^ J'ai remarqué que cela fonctionne uniquement en utilisant une chaîne de connexion qui cible globalement l'espace de noms du servicebus. Si je spécifie une chaîne de connexion qui cible uniquement une file d'attente spécifique, elle échoue. Est-ce quelque chose qui va changer à l'avenir? – Thomas