Azure функция C # HTTP триггера вывода - PullRequest
0 голосов
/ 24 июня 2019

Может кто-нибудь описать мне, как я могу настроить функцию C # azure, которая использует ввод HTTP и триггер вывода хранилища BLOB-объектов?

Может быть, также с примером фрагмента кода и примером function.json, я не могу заставить его работать локально с основными инструментальными средствами функций azure.

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Это комбинированная функция, запускаемая по протоколу HTTP, с привязкой выходного BLOB-объекта:

[FunctionName("HttpTriggeredFunction")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest httpRequest,
    [Blob("blobcontainer", Connection = "StorageConnectionString")] CloudBlobContainer outputContainer,
    ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    await outputContainer.CreateIfNotExistsAsync();

    var requestBody = await new StreamReader(httpRequest.Body).ReadToEndAsync();
    var blobName = Guid.NewGuid().ToString();

    var cloudBlockBlob = outputContainer.GetBlockBlobReference(blobName);
    await cloudBlockBlob.UploadTextAsync(requestBody);

    return new OkObjectResult(blobName);
}

. Используется тип вывода CloudBlobContainer для получения ссылки на контейнер BLOB-объектов, который затем позволяет использовать такие методы, как.GetBlockBlobReference("blobPath") для получения ссылки на BLOB-объект.

Получив ссылку на BLOB-объект, вы можете использовать различные методы для загрузки:

  • cloudBlockBlob.UploadFromByteArrayAsync()
  • cloudBlockBlob.UploadFromFileAsync()
  • cloudBlockBlob.UploadTextAsync()
  • cloudBlockBlob.UploadFromStreamAsync()

Чтобы запустить его локально, необходимо настроить некоторые параметры.Обратите внимание, что в моем примере атрибут [Blob("blobcontainer", Connection = "StorageConnectionString")]

  • "blobcontainer" может быть любым, каким вы хотите, и будет именем контейнера, который будет создан в вашей учетной записи хранения этой строкой outputContainer.CreateIfNotExistsAsync(); (если он еще не существует).
  • Connection = "StorageConnectionString", это может быть параметр в local.settings.json для строки подключения вашей учетной записи хранения.При локальной разработке я бы порекомендовал установить значение "UseDevelopmentStorage=true", чтобы вы могли воспользоваться эмулятором хранилища.Затем, когда вы будете готовы к развертыванию в Azure, вы создадите настройку в приложении-функции, содержащую строку реального соединения.

local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",

    "StorageConnectionString": "UseDevelopmentStorage=true"
  }
}
0 голосов
/ 25 июня 2019

Все, что вам нужно, есть на странице официальных документов,

(i) Http and WebHooks

(ii) Output binding blob storage

Пример кода триггера Http

[FunctionName("HttpTriggerCSharp")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] 
    HttpRequest req, ILogger log)

Привязка вывода хранилища BLOB-объектов

[FunctionName("ResizeImage")]
public static void Run(
    [BlobTrigger("sample-images/{name}")] Stream image,
    [Blob("sample-images-sm/{name}", FileAccess.Write)] Stream imageSmall,
    [Blob("sample-images-md/{name}", FileAccess.Write)] Stream imageMedium)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...