Подключение функций к службе хранилища Azure с помощью Visual Studio

Функции Azure позволяют выполнять подключение служб Azure и других ресурсов к функциям без необходимости написания кода для интеграции. Эти привязки, которые представляют как входные, так и выходные данные, объявляются в определении функции. Данные привязок предоставляются функции в качестве параметров. Триггер является специальным типом входных привязок. Хотя функция обладает только одним триггером, она может состоять из нескольких входных и выходных привязок. Дополнительные сведения см. в статье Основные понятия триггеров и привязок в Функциях Azure.

В этой статье приведены сведения об использовании Visual Studio для подключения функции, которая была создана в рамках предыдущей статьи, к службе хранилища Azure. Выходная привязка, которая была добавлена в эту функцию, записывает данные HTTP-запроса в сообщение очереди Хранилища очередей Azure.

Большинство привязок требуют сохраненную строку подключения, которая будет использоваться Функциями Azure для доступа к привязанным службам. Чтобы упростить процесс, вам следует использовать учетную запись хранения, созданную в приложении-функции. Подключение к этой учетной записи уже хранится в параметрах приложения под названием AzureWebJobsStorage.

Необходимые компоненты

Перед началом работы с этой статьей необходимо выполнить следующие действия:

Загрузка параметров приложения-функции

В предыдущей статье вы создавали приложение-функцию и соответствующую учетную запись хранения в Azure. Строка подключения данной учетной записи надежно хранится в параметрах приложения в Azure. В этой статье вы напишете сообщения в очередь хранилища в пределах одной учетной записи. Чтобы подключить учетную запись хранения при локальном выполнении функции, необходимо загрузить параметры приложения в файл local.settings.json.

  1. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Опубликовать.

  2. На вкладке Публикация в разделе Размещение щелкните три точки (...) и выберите Управление параметрами Службы приложений Azure.

    Изменение параметров приложения

  3. В разделе AzureWebJobsStorage скопируйте строковое значение Remote в строку Local, а затем нажмите кнопку ОК.

Привязка хранилища, которая использует для подключения параметр AzureWebJobsStorage, теперь может подключаться к Хранилищу очередей при локальном запуске.

Регистрация расширений привязки

Так как вы используете выходную привязку Хранилища очередей, перед запуском проекта необходимо установить расширение привязок службы хранилища. За исключением триггеров HTTP и таймера, привязки реализованы в виде пакетов расширений.

  1. В меню Сервис последовательно выберите пункты Диспетчер пакетов NuGet>Консоль диспетчера пакетов.

  2. В консоли выполните команду Install-Package для установки расширения службы хранилища.

    Install-Package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
    

Теперь вы можете добавить выходную привязку службы хранилища к проекту.

Добавление выходной привязки

В проекте C# привязки определяются как атрибуты привязки в методе функции. Конкретные определения зависят от того, выполняется ли приложение в процессе (библиотека классов C#) или в изолированном рабочем процессе.

Откройте файл проекта HttpExample.cs и добавьте следующий класс MultiResponse:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public HttpResponseData HttpResponse { get; set; }
}

Класс MultiResponse позволяет выполнять запись в очередь хранилища с именем outqueue и в сообщение об успешном выполнении HTTP. Так как атрибут QueueOutput применяется к массиву строк, в очередь можно отправить несколько сообщений.

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

Добавление кода, который использует выходную привязку

После определения привязки можно использовать name привязки для доступа к ней как к атрибуту в сигнатуре функции. После использования выходной привязки вам для проверки подлинности, получения ссылки на очередь или записи данных больше не потребуется код пакета SDK службы хранилища Azure. Вместо вас эти задачи будут выполнены выходной привязкой очереди и средой выполнения функции.

Замените класс HttpExample следующим кодом:

    [Function("HttpExample")]
    public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
        FunctionContext executionContext)
    {
        var logger = executionContext.GetLogger("HttpExample");
        logger.LogInformation("C# HTTP trigger function processed a request.");

        var message = "Welcome to Azure Functions!";

        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
        response.WriteString(message);

        // Return a response to both HTTP trigger and storage output binding.
        return new MultiResponse()
        {
            // Write a single message.
            Messages = new string[] { message },
            HttpResponse = response
        };
    }
}

Локальное выполнение функции

  1. Чтобы запустить функцию, нажмите клавишу F5 в Visual Studio. Возможно, вам потребуется включить исключение брандмауэра, чтобы инструменты могли обрабатывать HTTP-запросы. Уровни авторизации никогда не применяются при запуске функции в локальной среде.

  2. Скопируйте URL-адрес функции из выходных данных среды выполнения функций Azure.

    Локальная среда выполнения Azure

  3. Вставьте URL-адрес HTTP-запроса в адресную строку браузера и запустите запрос. На следующем изображении показан ответ в браузере на локальный запрос GET, возвращаемый функцией:

    Ответ функции localhost в браузере

  4. Чтобы остановить отладку, нажмите клавиши Shift+F5 в Visual Studio.

При первом использовании выходной привязки среда выполнения Функции создает в вашей учетной записи хранения новую очередь с именем outqueue. Чтобы убедиться, что очередь и сообщение в ней были созданы, вам нужно будет использовать Обозреватель службы хранилища.

Подключение Обозревателя службы хранилища к учетной записи

Пропустите этот раздел, если вы уже установили служба хранилища Azure Explorer и подключили его к учетной записи Azure.

  1. Запустите Обозреватель службы хранилища Azure, щелкните значок подключения слева и выберите Добавить учетную запись.

    Снимок экрана: добавление учетной записи Azure в служба хранилища Microsoft Azure Explorer.

  2. В диалоговом окне Подключение щелкните Добавить учетную запись Azure, выберите свою среду Azure, а затем выберите Войти....

    Снимок экрана: вход в окно учетной записи Azure.

После успешного входа вы увидите все подписки Azure, связанные с этой учетной записью. Выберите подписку и выберите "Открыть обозреватель".

Проверка выходной очереди

  1. В Обозреватель службы хранилища разверните узел очередей и выберите очередь с именем outqueue.

    В ней содержится сообщение о том, что выходная привязка очереди создана при запуске функции, активируемой HTTP. Если вы вызывали функцию со значением по умолчанию nameAzure, в сообщении очереди будет указано Имя переданной функции: Azure.

    Снимок экрана: сообщение очереди, показанное в обозревателе служба хранилища Azure.

  2. Запустите функцию еще раз, отправьте другой запрос, и в очереди появится новое сообщение.

Теперь пора выполнить повторную публикацию обновленного приложения-функции в Azure.

Повторное развертывание и проверка обновленного приложения

  1. В обозревателе решений щелкните правой кнопкой мыши проект и выберите Опубликовать, а затем нажмите кнопку Опубликовать, чтобы повторно опубликовать проект в Azure.

  2. По завершении развертывания вы можете снова использовать браузер для проверки повторно развернутой функции. Как и раньше, добавьте строку запроса &name=<yourname> к URL-адресу.

  3. Еще раз просмотрите сообщение в очереди хранилища, чтобы убедиться, что выходная привязка снова создает новое сообщение в очереди.

Очистка ресурсов

Другие краткие руководства в этой коллекции созданы на основе этого документа. Если вы планируете работать с последующими руководствами или краткими руководствами, а также или любыми службами, созданными при работе с этим руководством, не очищайте ресурсы.

Под ресурсами в Azure подразумеваются приложения-функции, функции, учетные записи хранения и т. д. Они объединяются в группы ресурсов, при удалении которых удаляются и все данные в них.

Вы создали ресурсы для завершения этих кратких руководств. За них вам могут быть выставлены счета в зависимости от состояния учетной записи и цен на службы. Если вам больше не нужны ресурсы, их можно удалить следующим образом:

  1. На портале Azure перейдите на страницу Resource group (Группа ресурсов).

    Чтобы перейти на эту страницу со страницы приложения-функции, перейдите на вкладку Обзор,и щелкните ссылку в разделе Группа ресурсов.

    Снимок экрана: выбор группы ресурсов, которую требуется удалить со страницы приложения-функции.

    Чтобы перейти на эту страницу с панели управления, выберите Resource groups (Группы ресурсов), а затем выберите группу ресурсов, которая использовалась в этой статье.

  2. На странице Группа ресурсов просмотрите список включенных ресурсов и убедитесь, что именно их нужно удалить.

  3. Выберите Удалить группу ресурсов и следуйте инструкциям.

    На удаление может потребоваться несколько минут. После этого на несколько секунд появится уведомление. Кроме того, можно выбрать значок колокольчика в верхней части страницы, чтобы просмотреть уведомление.

Следующие шаги

Вы обновили функцию, активируемую HTTP, которую теперь можно использовать для записи данных в очередь хранилища. Дополнительные сведения см. в статье Разработка Функций Azure с помощью Visual Studio.

Затем для мониторинга приложения-функции следует включить Application Insights.