Введение в функции Azure
Функции Azure — это бессерверное решение, которое позволяет в меньшем объеме писать объем кода и поддерживать инфраструктуру, а также экономить затраты. Вам не придется беспокоиться о развертывании и обслуживании серверов, ведь облачная инфраструктура предоставляет все новейшие ресурсы, необходимые для работы приложений.
Вы можете сосредоточиться на написании важного кода, а Функции Azure будут решать все остальные задачи.
Мы часто создаем системы, чтобы реагировать на ряд критических событий. В случае возникновения этих событий каждое приложение должно иметь возможность запускать код независимо от того, что вы делаете: создаете веб-API, реагируете на изменения базы данных, обрабатываете потоки данных Интернета вещей или даже управляете очередями сообщений.
Для этого служба «Функции Azure» предоставляет возможность выполнять вычисления по запросу двумя основными способами.
Первый — служба «Функции Azure» позволяет реализовать логику системы в быстро доступных блоках кода. Эти блоки кода называются «функциями». Вы можете запускать различные функции в любое время для реагирования на критические события.
Второй — по мере увеличения количества запросов служба «Функции Azure» полностью удовлетворяет потребности в необходимом количестве ресурсов и экземпляров функций (но только при необходимости). По мере уменьшения количества запросов все дополнительные ресурсы и экземпляры приложений автоматически отключаются.
Откуда берутся все эти вычислительные ресурсы? Служба «Функции Azure» предоставляет необходимое количество вычислительных ресурсов в соответствии с требованиями вашего приложения.
Суть бессерверных вычислений службы «Функции Azure» — в предоставлении вычислительных ресурсов по запросу.
Сценарии
Во многих случаях функция интегрируется с массивом облачных служб, чтобы обеспечить широкие возможности для реализаций.
Ниже перечислены распространенные наборы сценариев для службы «Функции Azure». Это неполный список сценариев.
| Цель. | Действие… |
|---|---|
| Создание веб-API | Реализуйте конечную точку для веб-приложений с помощью триггера HTTP |
| Обработка передаваемых файлов | Выполните код при передаче или изменении файла в хранилище BLOB-объектов |
| Создание бессерверного рабочего процесса | Объедините набор функций с помощью устойчивых функций |
| Реагирование на изменения базы данных | Запустите настраиваемую логику при создании или обновлении документа в Cosmos DB |
| Выполнение запланированных задач | Запустите код с заранее заданными интервалами времени |
| Создание надежных систем очереди сообщений | Обработайте очереди сообщений с помощью Хранилища очередей, служебной шины или Центров событий |
| Анализ потоков данных Интернета вещей | Получите и обработайте данные с устройств Интернета вещей |
| Обработка данных в реальном времени | Используйте службу «Функции Azure» и Signal R для реагирования на данные в реальном времени. |
При создании функций доступны следующие возможности и ресурсы:
Использование предпочитаемого языка. Пишите функции на языке C#, Java, JavaScript, PowerShell или Python или используйте настраиваемый обработчик, чтобы воспользоваться любым другим языком.
Автоматическое развертывание. Существует множество вариантов развертывания: от использования средств до применения внешних конвейеров.
Устранение неполадок функции. Используйте средства мониторинга и стратегии тестирования, чтобы получить аналитические сведения о приложениях.
Гибкие тарифные планы. Используя план потребления, вы платите только за время выполнения функций. Планы службы приложений и Премиум предлагают функции для особых потребностей.
Introduction to Azure Functions
Azure Functions is a serverless solution that allows you to write less code, maintain less infrastructure, and save on costs. Instead of worrying about deploying and maintaining servers, the cloud infrastructure provides all the up-to-date resources needed to keep your applications running.
You focus on the pieces of code that matter most to you, and Azure Functions handles the rest.
To meet this need, Azure Functions provides «compute on-demand» in two significant ways.
First, Azure Functions allows you to implement your system’s logic into readily available blocks of code. These code blocks are called «functions». Different functions can run anytime you need to respond to critical events.
Where do all the compute resources come from? Azure Functions provides as many or as few compute resources as needed to meet your application’s demand.
Providing compute resources on-demand is the essence of serverless computing in Azure Functions.
Scenarios
In many cases, a function integrates with an array of cloud services to provide feature-rich implementations.
The following are a common, but by no means exhaustive, set of scenarios for Azure Functions.
| If you want to. | then. |
|---|---|
| Build a web API | Implement an endpoint for your web applications using the HTTP trigger |
| Process file uploads | Run code when a file is uploaded or changed in blob storage |
| Build a serverless workflow | Chain a series of functions together using durable functions |
| Respond to database changes | Run custom logic when a document is created or updated in Cosmos DB |
| Run scheduled tasks | Execute code on pre-defined timed intervals |
| Create reliable message queue systems | Process message queues using Queue Storage, Service Bus, or Event Hubs |
| Analyze IoT data streams | Collect and process data from IoT devices |
| Process data in real time | Use Functions and SignalR to respond to data in the moment |
As you build your functions, you have the following options and resources available:
Use your preferred language: Write functions in C#, Java, JavaScript, PowerShell, or Python, or use a custom handler to use virtually any other language.
Automate deployment: From a tools-based approach to using external pipelines, there’s a myriad of deployment options available.
Troubleshoot a function: Use monitoring tools and testing strategies to gain insights into your apps.
Flexible pricing options: With the Consumption plan, you only pay while your functions are running, while the Premium and App Service plans offer features for specialized needs.
Создание приложений реального времени с помощью служб «Функции Azure» и «Azure SignalR»
Так как службы Azure SignalR и «Функции Azure» являются полностью управляемыми высокомасштабируемыми службами, которые позволяют сосредоточиться на создании приложений вместо управления инфраструктурой, часто используют обе службы, чтобы обеспечить обмен данными в реальном времени в беcсерверной среде.
Интеграция служб Azure в режиме реального времени
Функции Azure позволяют на нескольких языках, включая JavaScript, Python, C# и Java, создавать код, который запускается при каждом событии в облаке. Примеры этих событий.
Используя службу «Функции Azure» для интеграции этих событий с помощью службы Azure SignalR, вы можете уведомлять тысячи клиентов о каждом событии.
Некоторые распространенные сценарии беcсерверной передачи сообщений в режиме реального времени, которые можно реализовать с помощью служб «Функции Azure» и SignalR, включают следующее.
Привязки службы SignalR для службы «Функции Azure»
Пример сценария
Пример использования привязок службы SignalR — это использование службы «Функции Azure» для интеграции с Azure Cosmos DB и службой SignalR для отправки сообщений в режиме реального времени, когда появляются новые события в канале изменения Cosmos DB.
Проверка подлинности и пользователи
Служба SignalR позволяет рассылать широковещательные сообщения для всех клиентов или только для подмножества клиентов, например тех, которые принадлежат одному пользователю. Привязки службы SignalR для службы «Функции Azure» можно объединить с Проверкой подлинности службы приложений для проверки подлинности пользователей с помощью поставщиков, например Azure Active Directory, Facebook и Twitter. Затем вы можете отправлять сообщения непосредственно этим пользователям, прошедшим проверку подлинности.
Дальнейшие действия
В этой статье вы получили общие сведения об использовании службы «Функции Azure» со службой SignalR для реализации широкого спектра бессерверных сценариев обмена сообщениями в реальном времени.
Полные сведения об использовании Функций Azure и службы SignalR см. в следующих ресурсах:
Дополнительные сведения см. в следующих кратких руководствах.
Руководство разработчиков Функций Azure
Некоторые из Функций Azure имеют ряд общих технических особенностей и компонентов вне зависимости от используемого языка или привязки. Прежде чем приступать к детальному изучению особенностей, характерных для определенного языка или привязки, ознакомьтесь с этими общими сведениями.
В этой статье предполагается, что вы уже прочли статью Общие сведения о Функциях Azure.
Код функции
Файл function.json определяет триггер, привязки и другие параметры конфигурации функции. Каждая функция имеет только один триггер. В среде выполнения этот файл используется для определения событий, которые необходимо отслеживать, и способа передачи данных в выполнение функции и возвращения данных из него. Ниже приведен пример файла function.json.
В свойстве bindings указываются свойства триггеров и привязок. Каждая привязка имеет ряд общих параметров и некоторые параметры, характерные для данного типа привязки. Для каждой привязки требуются указанные ниже параметры.
| Свойство | Значения | Type | Комментарии | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| тип | Имя привязки. Приложение-функцияПриложение-функция предоставляет контекст выполнения в Azure, в котором выполняются функции. По сути, это отдельный элемент развертывания и управления для ваших функций. Приложение-функция состоит из одной или нескольких независимых функций, которые управляются, развертываются и масштабируются вместе. Для всех функций в приложении-функции действует один ценовой план, один метод развертывания и версия среды выполнения. Приложение-функцию можно рассматривать как способ упорядочения функций и совместного управления ими. Дополнительные сведения см. в разделе Управление приложением-функцией. Все функции в приложении-функции должны использовать один язык. Это не было обязательным в предыдущих версиях среды выполнения «Функции Azure». Структура папокКод всех функций приложения-функции хранится в корневой папке проекта, содержащей файл конфигурации главного узла. Файл host.json содержит конфигурацию среды выполнения. Он находится в корневой папке приложения-функции. Папка bin содержит пакеты и другие файлы библиотек, необходимые для работы приложения-функции. Структура папок, необходимая для приложения-функции, зависит от языка: В версии 2.x и более поздних среды выполнения Функций Azure все функции в приложении-функции следует создавать на одном языке. Выше приведена структура папки по умолчанию (рекомендуемая) для приложения-функции. Если вы желаете изменить расположение файла кода функции, измените раздел scriptFile в файле function.json. Мы рекомендуем развертывать проект в приложение-функцию в Azure путем развертывания пакета. Вы также можете использовать имеющиеся средства, такие как непрерывная интеграция и развертывание и Azure DevOps. Использование локальных инструментов и публикацияПриложения-функции можно разрабатывать и публиковать с помощью различных средств, включая Visual Studio, Visual Studio Code, IntelliJ, Eclipse и Azure Functions Core Tools. Дополнительные сведения см. в статье Как программировать и тестировать Функции Azure в локальной среде. Редактирование функций на портале AzureРедактор функций на портале Azure позволяет обновлять файл function.json и файл кода для функции непосредственно на портале. Рекомендуется использовать его только для небольших изменений или для подтверждения концепции. Наиболее оптимальным способом является использование локального средства разработки, например, VS Code. Параллельное выполнениеЕсли однопотоковая среда выполнения функций не успевает обрабатывать активируемые события, она может вызывать функцию несколько раз в параллельном режиме. Если для приложения-функции используется план потребления, это приложение может автоматически развертываться. Каждый экземпляр приложения-функции, как при использовании плана потребления, так и при использовании обычного плана размещения службы приложений, может обрабатывать несколько параллельных вызовов функции с помощью нескольких потоков. Максимальное количество одновременных вызовов функции в каждом экземпляре приложения-функции зависит от типа триггера и ресурсов, используемых функциями в приложении-функции. Управление версиями среды выполнения Функций3″ указывает на то, что приложение-функция будет использовать 3.x в качестве основного номера версии. При выпуске приложения-функции обновляются до версии с новым дополнительным номером. Дополнительные сведения, в том числе инструкции по просмотру точной версии приложения-функции см. в статье Выбор целевых версий среды выполнения Функций Azure. РепозиторииКод функций Azure имеет вид открытого исходного кода и хранится в репозиториях GitHub: ПривязкиВ таблице ниже приведены все поддерживаемые привязки. В этой таблице показаны привязки, которые поддерживаются в двух основных версиях среды выполнения Функций Azure.
1 Начиная со среды выполнения версии 2.х, все привязки, кроме HTTP и Timer, должны быть зарегистрированы. Ознакомьтесь с разделом Регистрация расширений привязки. 2 Триггеры не поддерживаются в плане потребления. Требуются триггеры, управляемые средой выполнения. 3 Поддерживается только в Kubernetes, IoT Edge и других автономных режимах. Проблемы с ошибками, поступающими от привязок? См. документацию по кодам ошибок Функций Azure. СоединенияПоставщик конфигурации по умолчанию использует переменные среды. Они могут быть заданы в параметрах приложения при работе в службе «Функции Azure» или в локальном файле параметров при локальной разработке. Значения подключенийЕсли имя подключения указывает на одно точное значение, среда выполнения определяет значение как строку подключения, которая обычно содержит секрет. Сведения о строке подключения определяются службой, к которой вы хотите подключиться. Например, connection свойство для определения триггера большого двоичного объекта Azure может иметь значение «Storage1». При условии отсутствия ни одного строкового значения, настроенного переменной среды с именем «Storage1», переменная среды с именем Storage1__blobServiceUri может использоваться для информирования blobServiceUri Свойства о соединении. Свойства подключения у всех служб различны. См. документацию по компоненту, использующему подключение. Настройка подключения на основе удостоверенийНекоторые подключения в функциях Azure можно настроить для использования удостоверения вместо секрета. Поддержка зависит от расширения, использующего подключение. В некоторых случаях строка подключения по-прежнему может потребоваться в Функциях Azure, даже если служба, к которой выполняется подключение, поддерживает подключения на основе удостоверений. Руководство по настройке приложений-функций с управляемыми удостоверениями см. в руководстве создание приложения-функции с помощью подключений на основе удостоверений. Подключения на основе удостоверений поддерживаются следующими компонентами:
Подключения на основе удостоверений не поддерживаются для Устойчивых функций. Предоставление разрешения удостоверениюЛюбое используемое удостоверение должно иметь разрешения на выполнение предполагаемых действий. Вам потребуется назначить роль в Azure RBACс помощью встроенных или пользовательских ролей, предоставляющих эти разрешения. Иногда целевая служба может предоставлять разрешения, которые не являются обязательными для всех контекстов. Там, где это возможно, придерживайтесь принципа минимальных привилегий, предоставляя удостоверению лишь самые необходимые привилегии. Например, если приложению нужно иметь возможность только считывать данные из источника данных, используйте роль, имеющую разрешение только на чтение. Назначение роли, которая также разрешает запись в эту службу, будет нежелательным, так как это будет излишнее разрешение для операции чтения. Аналогичным образом необходимо обеспечить область назначения роли только для ресурсов, которые необходимо считать. Выберите вкладку ниже, чтобы узнать о разрешениях для каждого компонента:
1 в некоторых конфигурациях для триггера большого двоичного объекта дополнительно может потребоваться участник данных очереди служба хранилища.
Общие свойства для подключений на основе удостоверенийПодключение на основе удостоверений для службы Azure принимает следующие общие свойства, где — это значение connection свойства в триггере или определении привязки:
Для данного типа подключения могут поддерживаться дополнительные параметры. Ознакомьтесь с документацией по компоненту, который создает подключение. Локальная разработка с использованием подключений на основе удостоверенийПри локальном запуске описанная выше конфигурация сообщает среде выполнения о необходимости использовать локальное удостоверение разработчика. При подключении будет предпринята попытка получить маркер из следующих расположений в указанном порядке: Если ни один из этих вариантов не будет успешным, будет возникать ошибка. В некоторых случаях может потребоваться указать другое удостоверение. вы можете добавить свойства конфигурации для подключения, которые указывают на альтернативное удостоверение, на основе идентификатора клиента и секрета клиента для субъекта-службы Azure Active Directory. Этот параметр конфигурации не поддерживается при размещении в службе «функции Azure». Чтобы использовать идентификатор и секрет на локальном компьютере, определите подключение со следующими дополнительными свойствами:
Ниже приведен пример свойств, local.settings.json необходимых для подключения на основе удостоверений к BLOB-объектам Azure. Подключение к хранилищу узла с удостоверением (Предварительная версия)По умолчанию функции Azure используют подключение «AzureWebJobsStorage» для основных характеристик, таких как координация одноэлементного выполнения триггеров таймера и хранилища ключей приложений по умолчанию. Это можно настроить так, чтобы оно также использовало удостоверение. Другие компоненты в функциях используют «AzureWebJobsStorage» для поведения по умолчанию. Не следует перемещать его в подключение на основе удостоверений, если используются более старые версии расширений, которые не поддерживают этот тип подключения, включая триггеры и привязки для больших двоичных объектов и концентраторов событий Azure. Аналогичным образом AzureWebJobsStorage используется для артефактов развертывания при использовании сборки на стороне сервера в Linux, а если это необходимо, необходимо выполнить развертывание с помощью внешнего пакета развертывания. Кроме того, некоторые приложения повторно используют «AzureWebJobsStorage» для других подключений к хранилищу в своих триггерах, привязках и (или) коде функции. Убедитесь, что все варианты использования «AzureWebJobsStorage» могут использовать формат подключения на основе удостоверений, прежде чем изменять это соединение из строки подключения. Чтобы использовать подключение на основе удостоверений для «AzureWebJobsStorage», настройте следующие параметры приложения:
Создание отчетов о проблемах
Дальнейшие действияДополнительные сведения см. в следующих ресурсах: |




