Функции Azure - подпись метода триггера StorageBlob с использованием CloudBlockBlob, а не потока - PullRequest
0 голосов
/ 17 декабря 2018

Создание функций Azure для .Net Standard 2.0 с использованием Visual Studio 2017.

С помощью мастера добавления новой функции Azure метод триггера большого двоичного объекта успешно создается со следующей сигнатурой метода.

public static void Run([BlobTrigger("attachments-collection/{name}")] Stream myBlob, string name, ILogger log)

Этот метод компилируется и работает нормально.

Однако мы хотим иметь доступ к метаданным, связанным с CloudBlockBlob, сохраняемым в хранилище, что, насколько я знаю, невозможно при использовании потока.Другие ответы на этом сайте, такие как ( Триггер функционального блога Azure, привязка CloudBlockBlob ), указывают на то, что вы можете связываться с CloudBlockBlob вместо Stream и получать доступ к метаданным таким способом.Но предлагаемое решение не компилируется в последней версии функций Azure.

Электронная документация Microsoft (https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob#trigger---usage) также, похоже, подтверждает, что можно связать триггер с CloudBlockBlob, а не с Stream,но не приводит пример синтаксиса.

Может ли кто-нибудь уточнить точный синтаксис, необходимый для привязки триггера хранилища функциональных блоков Azure к привязке к CloudBlockBlob вместо стандартного потока?

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Благодаря пониманию Джерри Лю эта проблема была решена.

Метод. Используйте пакет хранилища по умолчанию для хранилища Azure, который устанавливается при создании нового приложения-функции

Microsoft.Azure.WebJobs.Extensions.Storage (3.0.1)

Это устанавливает зависимость

WindowsAzure.Storage (9.3.1)

Тогда обе из следующих сигнатур методов будут работать правильно

public static async Task Run([BlobTrigger("samples-workitems/{name}")]Stream myBlob, string name, ILogger log)

и

public static async Task Run([BlobTrigger("samples-workitems/{name}")]CloudBlockBlob myBlob, string name, ILogger log)
0 голосов
/ 17 декабря 2018

На самом деле CloudBlockBlob действительно работает, нам не нужно FileAccess.ReadWrite, поскольку это BlobTrigger вместо ввода или вывода Blob.

public static Task Run([BlobTrigger("samples-workitems/{name}")]CloudBlockBlob blob, string name, ILogger log)

Обновление для Не могу связать BlobTrigger с CloudBlockBlob

Здесь отслеживается проблема здесь , функция SDK имеет некоторые проблемы при интеграции с WindowsAzure.Storge> = v9.3.2.Поэтому просто удалите все ссылки на пакеты WindowsAzure.Storage, SDK-функции по умолчанию ссылаются на v9.3.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...