2017-11-14 3 views
0

ServiceBus Queueトリガと追加の入力データを使用してAzure関数を作成しようとしています。 これは、blobの更新をトリガしてblobの名前を入力として与える関数です。私は追加入力としてBlobデータを持っています。追加の入力データパラメータバインディングを使用したAzure関数

作成されたfunction.jsonは次のとおりです。

{ 
    "bindings": [ 
    { 
     "name": "myQueueItem", 
     "type": "serviceBusTrigger", 
     "direction": "in", 
     "queueName": "afqueue", 
     "connection": "CONNECTIONSTRING", 
     "accessRights": "Listen" 
    }, 
    { 
     "type": "blob", 
     "name": "inputBlob", 
     "path": "samplecontainer/{name}", 
     "connection": "AzureWebJobsDashboard", 
     "direction": "in" 
    } 
    ], 
    "disabled": false 
} 

定義されている関数シグネチャは次のとおりです。

public static void Run(string myQueueItem, Stream inputBlob, TraceWriter log){} 

ハードコード値が機能が正常に動作している与えられた場合、これは

Function ($ServiceBusQueueTriggerCSharp1) Error: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.ServiceBusQueueTriggerCSharp1'. Microsoft.Azure.WebJobs.Host: No binding parameter exists for 'name'. 

代わりのPARAMTER {名前}、以下のようにエラーを返します。 入力データ変数へのバインディングを行う方法。

答えて

1

トリガーパラメータから入力バインディングをテンプレート化できます。したがって、nameは、サービスバスのメッセージペイロードの一部である必要があります。

public class MyQueueItem 
{ 
    public string name { get; set; } 
} 

public static void Run(MyQueueItem myQueueItem, Stream inputBlob, TraceWriter log) 
{} 

この機能の唯一のトリガーは、サービスバスメッセージです。あなたの他のコードが、システム内の各更新に対してblob名を持つService Busメッセージを送信しない限り、関数はBLOB更新によってトリガされません。

+0

乾杯!これはうまくいった。私はこれに関する十分な文書を見つけることができませんでした。 – TutuGeorge

関連する問題