2017-02-11 4 views
2

Out привязок имеет пример:Как вывести несколько капель из функции Azure?

ICollector<T> (to output multiple blobs) 

А также:

Path must contain the container name and the blob name to write to. For example, 
if you have a queue trigger in your function, you can use "path": 
"samples-workitems/{queueTrigger}" to point to a blob in the samples-workitems 
container with a name that matches the blob name specified in the trigger 
message. 

И по умолчанию в "интегрировать" UI имеет значение по умолчанию, как:

Path: outcontainer/{rand-guid} 

Но это не достаточно для меня добиться успеха. Если я кодирую на C#, то какой синтаксис для функции.json и для run.csx выводить несколько блоков в контейнер?

ответ

0

Существует несколько способов, которыми вы можете это выполнить. Во-первых, если количество блоков, которые вам нужно вывести, исправлено, вы можете просто использовать множественные выходные привязки.

using System; 

public class Input 
{ 
    public string Container { get; set; } 
    public string First { get; set; } 
    public string Second { get; set; } 
} 

public static void Run(Input input, out string first, out string second, TraceWriter log) 
{ 
    log.Info($"Writing 2 blobs to container {input.Container}"); 
    first = "Azure"; 
    second = "Functions"; 
} 

и соответствующая function.json:

{ 
    "bindings": [ 
    { 
     "type": "manualTrigger", 
     "direction": "in", 
     "name": "input" 
    }, 
    { 
     "type": "blob", 
     "name": "first", 
     "path": "{Container}/{First}", 
     "connection": "functionfun_STORAGE", 
     "direction": "out" 
    }, 
    { 
     "type": "blob", 
     "name": "second", 
     "path": "{Container}/{Second}", 
     "connection": "functionfun_STORAGE", 
     "direction": "out" 
    } 
    ] 
} 

Чтобы проверить выше, я послать полезную нагрузку тест JSON к функции, и капли генерируются:

{ 
    Container: "test", 
    First: "test1", 
    Second: "test2" 
} 

выше пример демонстрирует, как значения контейнера/имени blob могут быть привязаны от входа (с помощью выражений пути). Вам просто нужно определить POCO для захвата значений, к которым вы хотите привязать. Я использовал ManualTrigger здесь для простоты, но это работает и для других типов триггеров. Кроме того, в то время как я решил связать с out string типов, вы можете привязать к какой-либо из других поддерживаемых типов: TextWriter, Stream, CloudBlockBlob и т.д.

Если количество сгустков вам нужно вывести это переменная, то вы может использовать Binder, чтобы принудительно связывать и писать капли в вашем функциональном коде. См. here для более подробной информации. Чтобы привязываться к нескольким выходам, вы просто выполняете несколько обязательных привязок, используя эту технику.

FYI: наша документация была неправильным, поэтому я зарегистрировал ошибку here получить, что фиксированные :)

+0

Я пытаюсь что императивным шаблон. Получаем ошибку компиляции - см. Ниже. –

+0

// обязательное связывание с хранилищем blobPath = $ "json/{fileNamePart} _ {dateString}"; var attributes = new Атрибут [] { новый BlobAttribute (blobPath), новый StorageAccountAttribute (storageAccount) }; using (var writer = binder.Bind (атрибуты)) { writer.Write (jsonString.ToString()); } –

+0

Ошибка: 2017-02-12T00: 43: 43,243 Функция запускается (Id = 6d48c79d-5af3-4c9a-b4ab-242d186e7c33) 2017-02-12T00: 43: 43,243 Функция ошибки компиляции 2017-02- 12T00: 43: 43.243 (225,73): ошибка CS1026:) ожидается 2017-02-12T00: 43: 43.243 (225,61): ошибка CS1503: Аргумент 2: невозможно преобразовать из 'System.Attribute []' в ' System.Attribute ' 2017-02-12T00: 43: 43.243 (161,13): предупреждение CS0162: обнаружен недостижимый код 2017-02-12T00: 43: 43.243 (191,17): предупреждение CS0162: обнаружен недостижимый код 2017-02-12T00: 43: 43.243 Функция завершена (Failure, Id = 6d48c79d-5af3-4c9a-b4ab-242d186e7c33) –

Смежные вопросы