Поделиться через


Разработка бессерверных приложений Node.js с помощью функций Azure

Функции Azure предоставляют мощную бессерверную инфраструктуру, что упрощает разработку масштабируемых конечных точек HTTP по запросу. С помощью JavaScript или TypeScript можно создавать бессерверные приложения, которые отвечают на различные события, что позволяет сосредоточиться на написании кода, не беспокоясь об управлении серверами. Это руководство поможет вам приступить к разработке бессерверных приложений Node.js с помощью Функций Azure, интеграции с другими службами Azure.

Что такое ресурс Функций?

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

К параметрам ресурсов Функций относятся типичные бессерверные конфигурации, которые определяют переменные среды, аутентификацию, ведение журнала и CORS.

Устойчивые функции с отслеживанием состояния

Устойчивые функции сохраняют состояние или управляют долго выполняющимися функциями в Azure. Создайте устойчивую функцию с помощью JavaScript.

Статические веб-приложения включают функции

При разработке статического клиентского приложения внешнего интерфейса (например, Angular, React или Vue), которое также требует бессерверных API, используйте статические веб-приложения с функциями для объединения обоих функций.

Прокси-сервер между клиентским приложением и API

Если вы планируете развернуть API с помощью статического веб-приложения, вам не нужно прокси-серверы API клиентского приложения. Прокси-сервер устанавливается при развертывании приложения Функций Azure в качестве управляемого приложения.

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

Общие параметры безопасности, которые необходимо настроить для экземпляра Функций Azure

Для защиты экземпляра Функций Azure необходимо настроить следующие общие параметры:

  • Проверка подлинности и авторизация:
    • Используйте идентификатор Microsoft Entra (ранее Azure Active Directory) для надежной проверки подлинности. Настройте приложение-функцию, чтобы требовать токены OAuth2 для производственных рабочих нагрузок.
    • Избегайте использования ключей функций для конфиденциальных приложений. Вместо этого интегрируйте с идентификатором Microsoft Entra id или проверяйте токены JWT в коде функции.
    • Использование управляемых удостоверений позволяет аутентифицировать ваше приложение-функцию с другими ресурсами Azure, обеспечивая, что каждая функция получает доступ только к необходимым ресурсам.
  • Параметры конфигурации:
    • Параметры приложения — создайте параметры приложения для параметров, которые не влияют на безопасность.
    • Секреты и ключи — для любых параметров, влияющих на безопасность, используйте этот многоуровневый подход:
      1. Сначала используйте идентификатор Microsoft Entra для проверки подлинности, где поддерживается.
      2. Для интеграций, не поддерживающих Entra ID, сохраните секреты в Azure Key Vault и извлеките эти параметры из вашего хранилища ключей.
      3. Никогда не внедряйте секреты в файлы кода или конфигурации.
    • Сведения о других параметрах безопасности платформы см. в разделе "Защита функций Azure".
  • Безопасность сети:
    • CORS — настройте домены клиента. Не используйте *, указывая все домены.
    • Интеграция с виртуальной сетью — используйте частные конечные точки или интеграцию виртуальной сети, чтобы ограничить уязвимость сети и ограничить входящий трафик из доверенных источников.
  • HTTPS и шифрование:
    • Параметр TLS/SSL для HTTPS — по умолчанию ваш API принимает HTTP- и HTTPS-запросы. Включите Только HTTPS в параметрах TLS/SSL. Так как приложение-функция размещается в безопасном поддомене, его можно использовать немедленно (с https) и отложить покупку доменного имени и использовать сертификат для домена до тех пор, пока вы не будете готовы.
  • Развертывание и мониторинг:
    • Слоты развертывания — создайте слот развертывания, например stage или preflight, и отправляйте данные на такой слот. Переключите этот слот этапа на рабочую среду, когда вы будете готовы. Не получите в привычке вручную толкать на производство. Ваша база кода должна иметь возможность указать версию фиксации, которая используется со слотом.
    • Включите Application Insights для телеметрии в режиме реального времени, оповещений и обнаружения аномалий для мониторинга функций и журналов аудита на предмет подозрительной активности.

Подробные рекомендации по обеспечению безопасности см. в разделе "Защита функций Azure".

Варианты размещения функций Azure

Функции Azure можно размещать разными способами в зависимости от ваших требований:

Планы размещения ресурсов Функций Azure

При создании ресурса Функций Azure можно выбрать один из следующих планов размещения:

  • План потребления: оплачивайте только время выполнения функций с автоматическим масштабированием.
  • План потребления Flex: обеспечивает расширенный контроль с всегда готовыми экземплярами для уменьшения холодного запуска, интеграции виртуальной сети и настраиваемых размеров экземпляров (512 МБ до 4 ГБ). Этот план рекомендуется для новых рабочих нагрузок под управлением Linux, требующих корпоративных функций безопасности и производительности. Обратите внимание, что этот план использует биллинг на основе выполнения, аналогичный плану потребления, но с дополнительными затратами на такие функции, как постоянно готовые экземпляры.
  • План "Премиум": обеспечивает улучшенную производительность с предварительно разогретыми экземплярами, подключением к виртуальной сети и увеличенной продолжительностью выполнения.
  • Выделенный план (служба приложений): выполнение функций на выделенных виртуальных машинах для прогнозируемых затрат и полного контроля над средой выполнения.

Дополнительные сведения о выборе подходящего плана размещения см. в разделе "Параметры размещения Функций Azure".

Ресурс "Контейнерные приложения Azure"

Кроме того, можно развернуть Функции Azure в ресурсе приложений контейнеров Azure в качестве контейнерных рабочих нагрузок. Этот параметр обеспечивает полный контроль над средой контейнера и идеально подходит при необходимости пользовательских зависимостей, длительных процессов или необходимости объединения функций с другими контейнерными микрослужбами. Дополнительные сведения см. в разделе "Приложения контейнеров Azure" для размещения функций Azure .

Предварительные требования для разработки Функции Azure

  • Node.js LTS . Используйте последнюю версию долгосрочной поддержки (LTS) для обеспечения оптимальной совместимости и обновлений безопасности с помощью Функций Azure.
  • Основные инструменты Функций Azure. Используйте текущую основную версию для локальной разработки и отладки.

Простая функция JavaScript для HTTP-запросов

Функция — это экспортированная асинхронная функция со сведениями о запросе и контексте. На следующем снимке портала Azure показан код функции.

import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";

export async function status(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    context.log(`Http function processed request for url "${request.url}"`);

    return {
        status: 200,
        jsonBody: {
            env: process.env
        }
    };
};

app.http('status', {
    route: "status",
    methods: ['GET'],
    authLevel: 'anonymous',
    handler: status
});

Локальная разработка функций с помощью Visual Studio Code и расширений

Создайте первую функцию с помощью Visual Studio Code. Visual Studio Code упрощает работу со многими деталями с помощью расширения Azure Functions.

Это расширение позволяет создавать функции JavaScript и TypeScript на основе распространенных шаблонов.

Интеграция с другими службами Azure

Бессерверные функции изменяют значительную часть конфигурации и управления сервера, что позволяет вам сосредоточиться только на нужном коде.

  • Функции с низким кодом. С помощью функций Azure вы создаете функции, активированные другими службами Azure или выводим в другие службы Azure с помощью привязок триггеров. Модель программирования версии 4 регистрирует все триггеры и привязки непосредственно в коде, что делает конфигурацию безопасной и интуитивно понятной.
  • Функции с высоким кодом. Для получения дополнительных средств управления используйте пакеты SDK Azure для координации и управления другими службами Azure. Используйте управляемые удостоверения для безопасной проверки подлинности функций с другими ресурсами Azure без управления учетными данными.