Visual Studio 2017で最新のAzure Function SDKを使用していて、あるコンテナから別のコンテナにBLOBをコピーしたいとします。名前は同じですが、コンテナ名はソースBLOBのメタデータから取得されます。VS2017でAzure関数でBlobをコピー
私は機能を起動しようとしているとの始めとなどのメタデータを含める:これは動作します
[FunctionName("ScanFile")]
public static void Run([BlobTrigger("tobescanned/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob, IDictionary<string, string> metadata, string name, TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
log.Info($"metadata count {metadata.Count}");
}
、そうしてとしてコピーを実行しようとしました:
[FunctionName("ScanFile")]
public static void Run([BlobTrigger("tobescanned/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob, IDictionary<string, string> metadata, string name,
[Blob("employees/{name}", Connection = "AzureWebJobsStorage")]Stream outputBlob,
TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
log.Info($"metadata count {metadata.Count}");
myBlob.CopyTo(outputBlob);
}
しかし、今の機能呼び出されるイベントではないので、バインディングに何か問題があります。私が間違っていることが明らかに何かありますか?私は、新しいFunction SDKを使用している例が見つからないことが分かりました。
これからの次のステップは、実行時に出力コンテナを設定することです。
[FunctionName("ScanFile")]
public static void Run([BlobTrigger("tobescanned/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob, IDictionary<string, string> metadata, string name,
[Blob("{outputContainer}/{name}", Connection = "AzureWebJobsStorage")]Stream outputBlob, string outputContainer,
TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
log.Info($"metadata count {metadata.Count}");
outputContainer = metadata["Destination"];
myBlob.CopyTo(outputBlob);
}
出力がうまくいくように見えますか?
ありがとうございました
例2 - 生成されたバインディングを確認するために展開されたときに 'function.json'を見てください。例3は動作しません。おそらく 'ICollector'を使う必要があります。 – Mikhail
@Mikhail 'function.json'は入力バインディングしか持たず、出力を表示しません。 – ADringer