2017-03-26 13 views
0

イベントハブからBlobストレージにイベントを移動しようとしています。私はイベントハブにメッセージが来るたびにトリガするためにイベントハブにトリガを作成しました。また、Blob Storageとして出力を設定しました。今、私は関数内でやっていることは次のとおりです。Azure関数 - eventhubからBlobストレージにイベントを書き込むには

public static void Run(string myEventHubMessage, out string outputBlob, TraceWriter log) 
{ 
    outputBlob = myEventHubMessage; 
} 

これはOuputs構成で述べたコンテナに新しいブロブが作成されます。しかし、私は、イベント・ハブ・メッセージにあるデータに基づいて指定された名前のブロブを作成し、そのデータをAzure BLOBに保存しながらコンテンツ・タイプおよびその他のメタデータを設定する必要があります。誰かがこれを行う方法を手伝ってもらえますか?

よろしく、

ジョン

答えて

0

結合あなたの出力を設定するには、いくつかの可能性があります。

イベント・ハブメッセージのプロパティに基づいて、ブロブのパスを設定する必要がある場合は、例えば、その後、ブロブパスに宣言バインドあなたの強く型付けされたメッセージ

public class MyEvent 
{ 
    public string SomeName { get; set; } 
    // more properties 
} 

を宣言することができます

{ 
    "type": "blob", 
    "name": "outputBlob", 
    "path": "mycontainer/{SomeName}.json", 
    "connection": "...", 
    "direction": "out" 
}, 

し、それに応じてあなたが出力パスを決定するために、より高度な計算が必要な場合は

public static void Run(MyEvent myEventHubMessage, out MyEvent outputBlob) 
{ 
    outputBlob = myEventHubMessage; 
} 

、あなたがfunction.jsonからバインディング宣言型の出力を削除することができますし、必要不可欠バインディングを使用機能を変更します。

public static async Task Run(string myEventHubMessage, Binder binder) 
{ 
    var path = ...; 
    using (var writer = binder.Bind<TextWriter>(new BlobAttribute(path))) 
    { 
     writer.Write(myEventHubMessage); 
    } 
} 

Blobのプロパティをさらに設定する必要がある場合は、ICollector<CloudBlockBlob>

にバインドします。
var collector = binder.Bind<ICollector<CloudBlockBlob>>(new BlobAttribute(path))); 
collector.Add(new CloudBlockBlob { ... }); 

どのシナリオに適しているかを確認するには、これらのオプションをすべて使用してプレイする必要があります。

1

これ以上行う必要はありません。 イベントハブは、ボックス外のブロブストレージへの配管をサポートするようになりました。

関連する問題