Как использовать бессерверные функции Azure
В последние годы бессерверные технологии стали одной из самых обсуждаемых технологий. Хотя это и не совсем бессерверные варианты, бессерверные варианты переносят управление с пользователя на управляемую и размещенную службу.
Одной из самых захватывающих возможностей является написание кода для последующего запуска на бессерверных экземплярах. Функции Azure предлагают несколько сред выполнения, языков и даже поддержку контейнеров Docker. Вы просто выбираете язык, на котором хотите писать, развертываете код и используете результаты.
Подготовка приложения-функции Azure
Сначала перейдите к «Функциональному приложению» на портале Azure. Оказавшись там, нажмите кнопку «Создать функциональное приложение».
Введите значения, наиболее подходящие для вашей среды и потребностей. В этом примере мы будем использовать среду выполнения PowerShell Core 7.0.
- Название приложения-функции:
lc-test-function
- Публикация: код
- Стек среды выполнения: PowerShell Core
- Версия: 7.0
- Регион: восток США.
На вкладке Хостинг мы собираемся создать новую учетную запись хранения для хранения выходных данных функции. Поскольку это PowerShell, среда выполнения поддерживает только Windows, несмотря на то, что PowerShell 7 является кроссплатформенным. Наконец, мы используем план потребления для этой функции Azure.
Для мониторинга мы создадим новую конфигурацию Application Insights и включим параметр мониторинга.
Мы собираемся пропустить теги в этой статье и перейти к просмотру и созданию. Оказавшись здесь, убедитесь, что все выглядит правильно, затем нажмите «Создать».
Создание кода функции Azure
В этой статье мы собираемся продемонстрировать, как это работает с функцией триггера HTTP. Перейдите к функции приложения и щелкните панель «Функции». Оказавшись там, нажмите «Добавить» и выберите шаблон триггера HTTP.
Мы собираемся придерживаться значений по умолчанию для имени функции и уровня авторизации. Различные уровни авторизации соответствуют следующему:
- Функция. Использует определенную функциональную клавишу.
- Администратор: использует главный ключ для среды.
- Анонимный: не требует авторизации, ограничивает возможности
Изменение функционального кода
Щелкните только что созданную функцию HttpTrigger1
и щелкните раздел «Код + тест». Здесь вы найдете встроенный редактор кода, который позволит вам протестировать и запустить код вашей функции. Приведенные ниже значения являются конфигурациями по умолчанию.
Итак, что вы можете делать с функциональными приложениями? Есть много вариантов использования, и чтобы продемонстрировать одно из них, мы собираемся передать идентификатор определенного местоположения из вызывающего вызова PowerShell, который, в свою очередь, вызовет функцию Azure для работы с REST API для получения данных о погоде. Изменения, которые мы вносим в конфигурацию по умолчанию:
- Измените
$name
на$location
- Создайте вызов
Invoke-RestMethod
для API metaweather.com - Отформатировать результаты для отправки в виде строки в теле.
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$location = $Request.Query.Location
if (-not $location ) {
$location = $Request.Body.Location
}
$body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
if ($location ) {
$Params = @{
"URI" = "<https://www.metaweather.com/api/location/$location/>"
"Method" = 'GET'
}
$Result = Invoke-RestMethod @Params
$Body = $Result.consolidated_weather | Select-Object applicable_date, weather_state_name, the_temp, humidity
}
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = ($Body | Out-String)
})
Нажмите «Сохранить», чтобы внести изменения. Мы проверим/запустим этот код, чтобы убедиться, что он работает должным образом. Как только вы нажмете «Test/Run», нам будет представлено окно, которое позволяет нам изменить ввод, чтобы он соответствовал тому, что ожидает код.
{
"location": "2379574"
}
После запуска кода вы можете увидеть правильный вывод на вкладке «Вывод» под содержимым ответа HTTP.
Запуск функции через внешний PowerShell
Сначала нажмите кнопку URL-адреса «Получить функцию», которая предоставит вам URL-адрес, который вы можете использовать для вызова приложения «Функция».
В сеансе PowerShell используйте функцию Invoke-RestMethod
, чтобы вызвать триггер HTTP и передать переменную location
, ожидаемую сценарием. Как видно из вывода, данные о погоде возвращаются, как и ожидалось.
$Params = @{
"URI" = '<https://lc-test-function.azurewebsites.net/api/HttpTrigger1?code=Gvm5JRCrd0pPRyqhq2uA83PLg1zFocDI52aBLuCe9APXuPWlpPGHpA==>'
"Method" = 'POST'
"ContentType" = 'application/json'
"Body" = (@{
"location" = "2379574"
} | ConvertTo-JSON)
}
Invoke-RestMethod @Params=
Заключение
Функции Azure — это мощный инструмент для создания бессерверных функций на нескольких языках. Освободив разработчика от необходимости сосредотачиваться на среде и всех зависимостях, он может быстро перебирать код и проектировать для создания уникальных функций!