Поиск по сайту:

Как использовать бессерверные функции 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 — это мощный инструмент для создания бессерверных функций на нескольких языках. Освободив разработчика от необходимости сосредотачиваться на среде и всех зависимостях, он может быстро перебирать код и проектировать для создания уникальных функций!