Руководство. Интеграция Функций Azure с виртуальной сетью Azure с помощью частных конечных точек

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

В этом руководстве вы выполните следующие действия.

  • Создайте приложение-функцию в плане Elastic Premium с интеграцией виртуальной сети и частными конечными точками.
  • Создание ресурсов Azure, таких как служебная шина
  • Блокировка служебной шины за частной конечной точкой.
  • Развертывание приложения-функции, которая использует как служебную шину, так и триггеры HTTP.
  • Проверка нахождения приложения-функции в виртуальной сети.
  • Очистка ресурсов.

Создание приложения-функции в плане "Премиум"

Вы создаете приложение-функцию C# в плане Elastic Premium, который поддерживает сетевые возможности, такие как интеграция виртуальной сети при создании и бессерверное масштабирование. В этом руководстве используются C# и Windows. Также поддерживаются другие языки и Linux.

  1. В меню портала Azure или на домашней странице нажмите кнопку Создать ресурс.

  2. На странице Создать выберите Вычислительные ресурсы>Приложение-функция.

  3. На странице Основные сведения задайте параметры приложения-функции согласно приведенной ниже таблице.

    Параметр Рекомендуемое значение Описание
    Подписка Ваша подписка Подписка, в которой создано приложение-функция.
    Группа ресурсов myResourceGroup Имя новой группы ресурсов, в которой создается приложение-функция.
    Имя приложения-функции Глобально уникальное имя Имя, которое идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z (без учета регистра), 0-9и -.
    Опубликовать Код Параметр для публикации файлов кода или контейнера Docker.
    Стек среды выполнения .NET В этом руководстве используется .NET.
    Версия 6 (LTS) В этом руководстве используется .NET 6.0, выполняющаяся в том же процессе, что и узел Функций.
    Регион Предпочтительный регион Выберите ближайший регион или регион рядом с другими службами, к которому получают доступ ваши функции.
    Операционная система Windows В этом руководстве используется Windows, но также работает для Linux.
    План Функции уровня "Премиум" План размещения, который определяет выделение ресурсов в приложении-функции. По умолчанию при выборе плана Премиум создается новый план службы приложений. По умолчанию для параметра Номер SKU и размер задано значение EP1, где EP означает Elastic Premium (гибкий план "Премиум"). Дополнительные сведения см. в номеров SKU уровня "Премиум".

    При запуске функций JavaScript для плана "Премиум" выберите экземпляр с меньшим количеством виртуальных ЦП. Дополнительные сведения см. в разделе Выбор планов "Премиум" для конфигурации с одним виртуальным ЦП.
  4. Выберите Далее: хранилище. На странице Хранилище введите следующие параметры.

    Параметр Рекомендуемое значение Описание
    Учетная запись хранения Глобально уникальное имя Создайте учетную запись хранения для использования приложением-функцией. Имя учетной записи хранения должно содержать от 3 до 24 символов. Оно может содержать только цифры и строчные буквы. Вы также можете использовать существующую учетную запись, которая не ограничена правилами брандмауэра и соответствует требованиям учетной записи хранения. При использовании Функций с заблокированной учетной записью хранения требуется учетная запись хранения версии 2. Это версия хранилища по умолчанию, созданная при создании приложения-функции с сетевыми возможностями в колонке создания.
  5. По завершении выберите Next: сеть. На странице Сеть введите следующие параметры.

    Примечание

    Некоторые из этих параметров не отображаются, пока не будут выбраны другие параметры.

    Параметр Рекомендуемое значение Описание
    Включение открытого доступа Выключено Запрет доступа к общедоступной сети заблокирует весь входящий трафик, за исключением того, что поступает из частных конечных точек.
    Включение внедрения сети Включено Возможность настройки приложения с интеграцией с виртуальной сетью при создании появится в окне портала после того, как этот параметр будет установлен в положение Вкл.
    Виртуальная сеть Создать Выберите поле Создать . На всплывающем экране введите имя виртуальной сети и нажмите кнопку ОК. Отображаются параметры для ограничения входящего и исходящего доступа к приложению-функции при создании. Чтобы ограничить исходящий доступ, необходимо явно включить интеграцию с виртуальной сетью в разделе Исходящий доступ .

    Введите следующие параметры для раздела Входящий доступ . На этом шаге создается частная конечная точка в приложении-функции.

    Совет

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

    Параметр Рекомендуемое значение Описание
    Включение частных конечных точек Включено Возможность настройки приложения с интеграцией с виртуальной сетью при создании отображается на портале после включения этого параметра.
    Имя частной конечной точки myInboundPrivateEndpointName Имя, определяющее частную конечную точку нового приложения-функции.
    Входящая подсеть Создать Этот параметр создает новую подсеть для входящей частной конечной точки. В отдельную подсеть можно добавить несколько частных конечных точек. Укажите имя подсети. Для блока адресов подсети можно оставить значение по умолчанию. Щелкните ОК. Дополнительные сведения о размере подсети см. в разделе Подсети.
    DNS Частная зона DNS Azure Это значение указывает, какой DNS-сервер использует ваша частная конечная точка. В большинстве случаев, если вы работаете в Azure, зона Частная зона DNS Azure является зоной DNS, которую следует использовать, так как использование вручную для настраиваемых зон DNS имеет повышенную сложность.

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

    Параметр Рекомендуемое значение Описание
    Включение интеграции с виртуальной сетью Включено Это интегрирует приложение-функцию с виртуальной сетью при создании и перенаправлении всего исходящего трафика через виртуальную сеть.
    Подсеть исходящего трафика Создание При этом создается новая подсеть для интеграции с виртуальной сетью приложения-функции. Приложение-функция может быть интегрировано только с пустой подсетью. Укажите имя подсети. Для блока адресов подсети можно оставить значение по умолчанию. Если вы хотите настроить его, ознакомьтесь с дополнительными сведениями о размере подсети здесь. Щелкните ОК. Отображается параметр для создания частных конечных точек хранилища . Чтобы использовать приложение-функцию с виртуальными сетями, его необходимо присоединить к подсети.

    Введите следующие параметры для раздела Частная конечная точка хранилища . На этом шаге создаются частные конечные точки для конечных точек больших двоичных объектов, очередей, файлов и таблиц в учетной записи хранения при создании. Это эффективно интегрирует учетную запись хранения с виртуальной сетью.

    Параметр Рекомендуемое значение Описание
    Добавление частной конечной точки хранилища Включено Возможность настройки приложения с интеграцией с виртуальной сетью при создании отображается на портале после включения этого параметра.
    Имя частной конечной точки myInboundPrivateEndpointName Имя, идентифицирующее частную конечную точку учетной записи хранения.
    Подсеть частной конечной точки Создать При этом создается новая подсеть для входящей частной конечной точки в учетной записи хранения. В отдельную подсеть можно добавить несколько частных конечных точек. Укажите имя подсети. Для блока адресов подсети можно оставить значение по умолчанию. Если вы хотите настроить его, ознакомьтесь с дополнительными сведениями о размере подсети здесь. Щелкните ОК.
    DNS Частная зона DNS Azure Это значение указывает, какой DNS-сервер использует ваша частная конечная точка. В большинстве случаев, если вы работаете в Azure, зона Частная зона DNS Azure является зоной DNS, которую следует использовать, так как использование вручную для настраиваемых зон DNS будет иметь повышенную сложность.
  6. По завершении выберите Next: Мониторинг. Введите следующие параметры на странице Мониторинг.

    Параметр Рекомендуемое значение Описание
    Application Insights По умолчанию Создает ресурс Application Insights с таким же именем приложения в ближайшем поддерживаемом регионе. Разверните этот параметр, если вам нужно изменить Новое имя ресурса или сохранить данные в другое Расположение в Географическом регионе Azure.
  7. Выберите Просмотр и создание , чтобы просмотреть выбранные параметры конфигурации приложения.

  8. На странице Просмотр и создание проверьте выбранные параметры. Затем выберите Создать , чтобы создать и развернуть приложение-функцию.

  9. Нажмите на значок Уведомления в правом верхнем углу портала. Вы должны увидеть сообщение Развертывание выполнено.

  10. Выберите Перейти к ресурсу для просмотра нового приложения-функции. Можно также установить флажок Закрепить на панели мониторинга. Это упростит возвращение к этому ресурсу приложения-функции из панели мониторинга.

Поздравляем! Вы успешно создали приложение-функцию уровня "Премиум".

Примечание

Некоторые развертывания могут не создавать частные конечные точки в учетной записи хранения с ошибкой StorageAccountOperationInProgress. Этот сбой происходит, даже если само приложение-функция успешно создано. При возникновении такой ошибки удалите приложение-функцию и повторите операцию. Вместо этого можно создать частные конечные точки в учетной записи хранения вручную.

Создание служебной шины

Далее вы создадите экземпляр служебной шины, который используется для проверки функциональности сетевых возможностей приложения-функции в этом руководстве.

  1. В меню портала Azure или на домашней странице нажмите кнопку Создать ресурс.

  2. На странице Создать найдите элемент Служебная шина. Щелкните Создать.

  3. На вкладке Основные сведения настройте параметры служебной шины Microsoft Azure согласно приведенной ниже таблице. Для всех остальных параметров оставьте значения по умолчанию.

    Параметр Рекомендуемое значение Описание
    Подписка Ваша подписка Подписка, в которой создаются ресурсы.
    Группа ресурсов myResourceGroup Группа ресурсов, которую вы создали с помощью приложения функции.
    Имя пространства имен myServiceBus Имя экземпляра служебной шины, для которого включена частная конечная точка.
    Расположение myFunctionRegion Регион, в котором вы создали приложение функцию.
    Ценовая категория Premium Выберите этот уровень, чтобы использовать частные конечные точки со служебной шиной Azure.
  4. Выберите Review + create (Просмотреть и создать). После завершения проверки нажмите кнопку Создать.

Блокировка служебной шины

Создайте частную конечную точку для блокировки служебной шины Microsoft Azure:

  1. В новой служебной шине Microsoft Azure в меню слева выберите Сеть.

  2. На вкладке Частные конечные точки выберите пункт Частная конечная точка.

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

  3. На вкладке Основные сведения используйте параметры частной конечной точки, приведенные в следующей таблице.

    Параметр Рекомендуемое значение Описание
    Подписка Ваша подписка Подписка, в которой создаются ресурсы.
    Группа ресурсов myResourceGroup Группа ресурсов, которую вы создали с помощью приложения функции.
    имя; sb-endpoint Имя частной конечной точки для служебной шины.
    Регион myFunctionRegion Регион, в котором вы создали свою учетную запись хранения.
  4. На вкладке Ресурс используйте параметры частной конечной точки, приведенные в следующей таблице.

    Параметр Рекомендуемое значение Описание
    Подписка Ваша подписка Подписка, в рамках которой создан ресурс.
    Тип ресурса Microsoft.ServiceBus/namespaces Тип ресурса для служебной шины Microsoft Azure.
    Ресурс myServiceBus Служебная шина Microsoft Azure, созданная ранее в этом руководстве.
    Целевой подресурс namespace Частная конечная точка, используемая для пространства имен из служебной шины.
  5. На вкладке виртуальная сеть для параметра Подсеть выберите значение по умолчанию.

  6. Выберите Review + create (Просмотреть и создать). После завершения проверки нажмите кнопку Создать.

  7. После создания частной конечной точки вернитесь в раздел Сеть пространства имен служебной шины и проверка вкладку Общий доступ.

  8. Убедитесь в том, что флажок Выбранные сети установлен.

  9. Выберите + Добавить существующую виртуальную сеть, чтобы добавить недавно созданную виртуальную сеть.

  10. На вкладке Добавление сетей используйте параметры сети из следующей таблицы:

    Параметр Рекомендуемое значение Описание
    Подписка Ваша подписка Подписка, в рамках которой создан ресурс.
    Виртуальные сети myVirtualNet Имя виртуальной сети, к которой подключается приложение-функция.
    Подсети functions Имя подсети, к которой подключается приложение-функция.
  11. Выберите параметр Добавить IP-адрес клиента, чтобы предоставить текущему IP-адресу клиента доступ к пространству имен.

    Примечание

    Далее в этом руководстве будет показано, как разрешить порталу Microsoft Azure публиковать сообщения в очереди с помощью IP-адреса клиента.

  12. Выберите Включить, чтобы включить конечную точку службы.

  13. Выберите Добавить, чтобы добавить выбранную виртуальную сеть и подсеть в правила брандмауэра для служебной шины Microsoft Azure.

  14. Щелкните Сохранить, чтобы сохранить обновленные правила брандмауэра.

Теперь ресурсы в виртуальной сети могут взаимодействовать со служебной шиной Microsoft Azure с помощью частной конечной точки.

Создание очереди

Создайте очередь, в которой триггер служебной шины Функции Azure получает события:

  1. В служебной шине в меню слева выберите Очереди.

  2. Выберите Очередь. В рамках этого руководства в качестве имени новой очереди укажите очередь имен.

    Снимок экрана: создание очереди служебной шины.

  3. Нажмите кнопку создания.

Получение строки подключения служебной шины

  1. В служебной шине в меню слева выберите Политики общего доступа.

  2. Выберите RootManageSharedAccessKey. Скопируйте и сохраните Основную строку подключения. Эта строка подключения потребуется при настройке параметров приложения.

    Снимок экрана: получение строки подключения служебной шины.

Настройка параметров приложения-функции

  1. В приложении-функции в меню слева выберите пункт Конфигурация.

  2. Чтобы использовать приложение-функцию с виртуальными сетями и служебной шиной, обновите параметры приложения, показанные в следующей таблице. Чтобы добавить или изменить параметр, выберите пункт + Новый параметр приложения или нажмите на значок правки в крайнем правом столбце таблицы параметров приложения. По завершении нажмите кнопку Сохранить.

    Параметр Рекомендуемое значение Описание
    SERVICEBUS_CONNECTION myServiceBusConnectionString Создайте этот параметр приложения для строки подключения служебной шины. Эта строка подключения к хранилищу взята из раздела Получение строки подключения служебной шины.
    WEBSITE_CONTENTOVERVNET 1 Создайте этот параметр приложения. Значение 1 обеспечит масштабирование вашему приложению-функции, если ваша учетная запись хранения ограничена виртуальной сетью.
  3. Так как вы используете план размещения Elastic Premium, в представлении Конфигурация выберите вкладку Параметры среды выполнения функций . Установите для параметра Мониторинг масштабирования среды выполнения значение Включено. Затем нажмите кнопку Save (Сохранить). Масштабирование на основе среды выполнения позволяет подключать функции триггеров, отличных от HTTP, к службам, в вашей виртуальной сети.

    Снимок экрана: включение масштабирования на основе среды выполнения для Функций Azure.

Примечание

Масштабирование среды выполнения не требуется для приложений-функций, размещенных в плане выделенных Служба приложений.

Развертывание триггера служебной шины и триггера HTTP

Примечание

Включение частных конечных точек в приложении-функции также делает сайт диспетчера управления версиями (SCM) общедоступным. Ниже приведены инструкции по развертыванию с помощью Центра развертывания в приложении-функции. Кроме того, используйте zip-развертывание или локальные агенты, развернутые в подсети виртуальной сети.

  1. В GitHub перейдите к следующему примеру репозитория. Он содержит приложение-функцию и две функции, триггер HTTP и триггер очереди служебной шины.

    https://github.com/Azure-Samples/functions-vnet-tutorial

  2. В верхней части страницы выберите Вилку, чтобы создать вилку этого репозитория в собственной учетной записи GitHub или в организации.

  3. В приложении-функции в меню слева выберите пункт Центр развертывания. Затем выберите Параметры.

  4. На вкладке Параметры используйте параметры развертывания, приведенные в следующей таблице.

    Параметр Рекомендуемое значение Описание
    Источник GitHub На этапе 2 вы должны были создать репозиторий GitHub для примера кода.
    Организация myOrganization Организация, в которой зарегистрирован ваш репозиторий. Обычно это ваша учетная запись.
    Репозиторий руководство по функциям в виртуальной сети Репозиторий, отделенный от https://github.com/Azure-Samples/functions-vnet-tutorial.
    Ветвь main Главная ветвь созданного вами репозитория.
    Стек среды выполнения .NET Код в примере написан на C#.
    Версия .NET Core 3.1 Версия среды выполнения.
  5. Щелкните Сохранить.

    Снимок экрана: развертывание кода Функций Azure через портал.

  6. В первый раз развертывание может занять несколько минут. После успешного развертывания приложения на вкладке Журналы отобразится сообщение о состоянии Успешно (активно) . Если потребуется, обновите страницу.

Поздравляем! Вы успешно развернули пример приложения функции.

Тестирование заблокированного приложения-функции

  1. В приложении-функции в меню слева выберите пункт Функции.

  2. Выберите ServiceBusQueueTrigger.

  3. В меню слева выберите Монитор.

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

Существует и другой способ мониторинга функции с помощью Application Insights:

  1. В приложении функции в меню слева выберите пункт Application Insights. Затем выберите Просмотр данных Application Insights.

    Снимок экрана: просмотр Application Insights для приложения-функции.

  2. В меню слева выберите Динамические метрики.

  3. В служебной шине на новой вкладке в меню слева выберите Очереди.

  4. Выберите свою очередь.

  5. В меню слева выберите Обозреватель служебной шины. В разделе Отправить (для параметра Тип содержимого) выберите значение Текст/обычный. Введите сообщение.

  6. Нажмите кнопку Отправить, чтобы отправить сообщение.

    Снимок экрана: отправка сообщений служебной шины через портал.

  7. На вкладке Динамические метрики вы увидите, что триггер очереди служебной шины запущен. Если нет, отправьте сообщение из Обозревателя служебной шины еще раз.

    Снимок экрана: просмотр сообщений с помощью динамических метрик для приложения-функции.

Поздравляем! Вы протестировали настройки своего приложения-функции с частными конечными точками.

Общие сведения о частных зонах DNS

Вы использовали частную конечную точку для подключения к ресурсам Azure. Вы подключаетесь к частному IP-адресу, а не к общедоступной конечной точке. Существующие службы Azure настроены на использование существующего DNS для подключения к общедоступной конечной точке. Необходимо переопределить конфигурацию DNS так, чтобы подключение выполнялось к частной конечной точке.

Для каждого ресурса Azure, настроенного с использованием частной конечной точки, создается частная зона DNS. Для каждого частного IP-адреса, связанного с использованием частной конечной точкой, создается запись DNS.

В этом учебнике были созданы следующие зоны DNS:

  • privatelink.file.core.windows.net
  • privatelink.blob.core.windows.net
  • privatelink.servicebus.windows.net
  • privatelink.azurewebsites.net

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

На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы считаете, что в будущем эти ресурсы вам не понадобятся, их можно удалить, удалив группу ресурсов.

В меню или на странице Главная портала Azure выберите Группы ресурсов. Затем на странице Группы ресурсов выберите myResourceGroup.

На странице myResourceGroup убедитесь, что перечислены те ресурсы, которые нужно удалить.

Выберите Удалить группу ресурсов, введите myResourceGroup в текстовое поле для подтверждения и щелкните Удалить.

Дальнейшие действия

В этом руководстве вы создали приложение-функцию уровня «Премиум», учетную запись хранения и служебную шину. Вы защитили все эти ресурсы за частными конечными точками.

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