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

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

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

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

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

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

  1. В меню портала Azure или на странице Главная выберите Создать ресурс.

  2. На новой странице выберите веб>функциональное приложение.

  3. На странице параметров размещения выберите "Функции Премиум".

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

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

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

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

    Примечание.

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

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

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

    Совет

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

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

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

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

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

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

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

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

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

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

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

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

  • При создании приложения-функции плана Premium в портале с учетной записью хранения, использующей частные конечные точки, портал автоматически устанавливает значение vnetContentShareEnabled для свойства сайта true. Это свойство гарантирует, что трафик к хранилищу Файлы Azure, используемому для расширения приложения плана Premium, проходит через виртуальную сеть. Дополнительные сведения см. в справочнике по свойству сайта vnetContentShareEnabled. Для автоматизированных развертываний необходимо явно задать это свойство сайта в шаблоне развертывания. Дополнительные сведения см. в разделе "Защищенные развертывания".

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

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

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

  1. В меню портала Azure или на странице Главная выберите Создать ресурс.

  2. На странице New найдите служебная шина. Затем выберите Создать.

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

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

Закройте доступ к вашему служебная шина

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

  1. В новом служебная шина в меню в разделе Settings выберите Networking.

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

    Скриншот перехода к закрытым конечным точкам для служебная шина.

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

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

    Настройка Предлагаемое значение Описание
    Subscription Ваша подписка Подписка, в рамках которой создан ресурс.
    Тип ресурса Майкрософт.ServiceBus/пространства_имен Тип ресурса для служебная шина.
    Ресурс myServiceBus служебная шина, созданный ранее в учебнике.
    Целевой подресурс пространство имен Частная конечная точка, используемая для пространства имен в служебная шина.
  5. На вкладке виртуальная сеть для параметра Subnet выберите входящую подсеть, которую вы создали.

  6. Оставьте DNS и теги по умолчанию, а затем нажмите кнопку "Проверить и создать". После завершения проверки нажмите кнопку Создать.

  7. После создания частной конечной точки вернитесь к разделу Networking пространства имен служебная шина и проверьте вкладку Public Access.

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

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

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

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

    Примечание.

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

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

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

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

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

Создать очередь

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

  1. В служебная шина в меню в разделе Entities выберите Queues.

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

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

  3. Нажмите кнопку "Создать".

Предоставление функциональному приложению доступа к служебная шина

Поскольку вы активировали назначенное системой управляемое удостоверение во время создания приложения, вы можете теперь использовать управление доступом на основе ролей (RBAC) для предоставления функциональному приложению доступа к служебная шина.

  1. В пространстве имен служебная шина выберите Управление доступом (IAM).

  2. Выберите Добавить>Добавить назначение ролей.

  3. Найдите приемник данных Служебная шина Azure, выберите роль и выберите Next.

  4. На вкладке "Участники" для назначения доступа выберите управляемое удостоверение.

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

  6. Выберите Проверить + Назначить, чтобы завершить назначение роли.

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

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

  1. В вашем функциональном приложении в меню в разделе Настройки выберите переменные среды.

  2. Чтобы подключить приложение функций к служебная шина с помощью управляемой идентичности, необходимо добавить настройку пространства имен служебная шина. Выберите + Добавить, чтобы создать новый параметр SERVICEBUS_CONNECTION__fullyQualifiedNamespace со значением <SERVICE_BUS_NAMESPACE>.servicebus.windows.net, заменив <SERVICE_BUS_NAMESPACE> на имя вашего пространства имен служебная шина. По завершении нажмите кнопку "Применить".

  3. Так как вы используете план размещения Elastic Premium, в разделе переменные среды выберите вкладку «Параметры приложения». Убедитесь, что параметр FUNCTIONS_WORKER_RUNTIME имеет значение dotnet-isolated. Затем выберите вкладку параметров среды выполнения функции. Установите Мониторинг масштабирования среды выполнения в значение "Вкл". Затем нажмите кнопку "Применить". Масштабирование на основе среды выполнения позволяет подключать функции триггеров, отличных от HTTP, к службам, в вашей виртуальной сети.

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

Примечание.

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

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

Внимание

Так как общедоступный доступ отключен, сайт развертывания SCM недоступен. Необходимо временно повторно включить публичный доступ, чтобы Центр развертывания мог развернуть ваш код. Для рабочих нагрузок разверните из локального агента, развернутого в подсети виртуальной сети, или подключите компьютер разработки с помощью VPN типа "точка — сеть". Дополнительные сведения см. в разделе "Защищенные виртуальные сети".

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

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

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

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

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

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

    Настройка Предлагаемое значение Описание
    Источник GitHub Необходимо создать репозиторий GitHub для примера кода на шаге 2.
    Предприятие myOrganization Организация, в которой зарегистрирован ваш репозиторий. Обычно это ваша учетная запись.
    Репозиторий руководство по функциям в виртуальной сети Репозиторий форкнут отсюда.
    Филиал главный Главная ветвь созданного вами репозитория.
    Стек среды выполнения .NET Код в примере написан на C#.
    Версия .NET 8 Изолированный Версия среды выполнения.
  6. Нажмите Сохранить.

    Снимок экрана, демонстрирующий, как развернуть код Функции Azure через портал.

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

  8. Теперь, когда развертывание завершено, повторно защитите приложение. В приложении-функции перейдите в раздел "Параметры>сети " и задайте для доступа к общедоступной сетизначение "Отключено". Нажмите Сохранить.

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

Протестируйте ваше заблокированное функциональное приложение

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

  1. В приложении-функции в меню в разделе "Мониторинг" выберите Application Insights. Нажмите кнопку "Применить" и выберите "Просмотреть данные Application Insights".

    Снимок экрана, как просмотреть Azure Application Insights для функционального приложения.

  2. В меню в разделе "Исследование" выберите "Динамические метрики".

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

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

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

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

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

  7. На вкладке Live metrics вы увидите, что триггер очереди служебная шина запущен. Если это не так, повторно отправьте сообщение из служебная шина Explorer.

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

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

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

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

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

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

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

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

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

  1. В меню портала Azure или домашней странице выберите группы Resource>myResourceGroup.

  2. На панели myResourceGroup убедитесь, что перечисленные ресурсы являются теми, которые требуется удалить.

  3. Выберите команду Удалить группу ресурсов. Введите myResourceGroup в текстовом поле, чтобы подтвердить, а затем нажмите кнопку "Удалить".

Следующие шаги

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

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