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


Расширение Dapr для функций Azure

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

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

Интеграция между Dapr и Functions позволяет создавать функции, реагирующие на события из Dapr или внешних систем.

Действие Направление Тип
Триггер входной привязки Dapr N/A daprBindingTrigger
Триггер вызова службы Dapr N/A daprServiceInvocationTrigger
Активация подписки на раздел Dapr N/A daprTopicTrigger
Извлечение в состоянии Dapr для выполнения In daprState
Извлечение секретов Dapr для выполнения In daprSecret
Сохранение значения в состоянии Dapr Out daprState
Вызов другого приложения Dapr Out daprInvoke
Публикация сообщения в разделе Dapr Out daprPublish
Отправка значения в выходную привязку Dapr Out daprBinding

Установка расширения

Установленный пакет NuGet расширения зависит от режима C# в процессе или изолированном рабочем процессе , который вы используете в приложении-функции:

Это расширение доступно путем установки пакета NuGet версии 1.0.0.

Использование .NET CLI:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr

Установка пакета

Чтобы использовать это расширение привязки в приложении, убедитесь, что файл host.json в корне проекта содержит следующую extensionBundle ссылку:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

В этом примере значение указывает узлу version функций использовать версию пакета, которая по крайней мере [4.0.0, 5.0.0) меньше4.0.0, чем , которая включает все потенциальные версии 4.x.5.0.0 Эта нотация эффективно поддерживает ваше приложение в последней доступной дополнительной версии пакета расширений версии 4.x.

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

Включение Dapr

Можно настроить Dapr с помощью различных [аргументов и заметок][dapr-args] на основе контекста среды выполнения. Dapr для функций Azure можно настроить двумя каналами:

  • Шаблоны инфраструктуры как кода (IaC), как в шаблонах Bicep или Azure Resource Manager (ARM)
  • портал Azure.

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

DaprConfig: {
  enabled: true
  appId: '${envResourceNamePrefix}-funcapp'
  appPort: 3001
  httpReadBufferSize: ''
  httpMaxRequestSize: ''
  logLevel: ''
  enableApiLogging: true
}

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

При настройке Dapr с помощью портала Azure перейдите к приложению-функции и выберите Dapr в меню слева:

Снимок экрана: поиск включения Dapr для приложения-функции на портале Azure.

Порты и прослушиватели Dapr

При активации функции из Dapr расширение автоматически предоставляет порт 3001 для прослушивания входящих запросов из бокового автомобиля Dapr.

Это важно

Порт 3001 предоставляется только и прослушивается, если триггер Dapr определен в приложении-функции. При использовании Dapr боковой кареты ожидает получения ответа от определенного порта перед завершением создания экземпляра. Не определяйте заметку dapr.io/port или --app-port если у вас нет триггера. Это может заблокировать приложение с бокового автомобиля Dapr.

Если вы используете только входные и выходные привязки, порт 3001 не должен быть предоставлен или определен.

По умолчанию, когда функции Azure пытаются взаимодействовать с Dapr, он вызывает Dapr через порт, разрешенный из переменной DAPR_HTTP_PORTсреды. Если эта переменная имеет значение NULL, по умолчанию используется порт 3500.

Можно переопределить адрес Dapr, используемый входными и выходными привязками, задав DaprAddress свойство в function.json привязке (или атрибут). По умолчанию используется http://localhost:{DAPR_HTTP_PORT}.

Приложение-функция по-прежнему предоставляет другой порт и конечную точку для таких вещей, как триггеры HTTP, которые локально по умолчанию по умолчанию, но в контейнере по умолчанию707180.

Типы привязки

Типы привязки, поддерживаемые для .NET, зависят от версии расширения и режима выполнения C#, что может быть одним из следующих типов:

Библиотека классов в процессе — это скомпилированная функция C# выполняется в том же процессе, что и среда выполнения Функций.

Расширение Dapr поддерживает типы параметров в соответствии с таблицей ниже.

Binding Типы параметров
Триггер Dapr daprBindingTrigger
daprServiceInvocationTrigger
daprTopicTrigger
Входные данные Dapr daprState
daprSecret
Выходные данные Dapr daprState
daprInvoke
daprPublish
daprBinding

Примеры использования этих типов см. в репозитории GitHub для расширения.

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

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

Samples Description
Краткое руководство Приступая к работе с привязкой Dapr Pub/sub и HttpTrigger.
Dapr Kafka Узнайте, как использовать расширение Dapr функций Azure с компонентом Dapr привязки Kafka.
В процессе .NET Узнайте, как использовать модель функций Azure для интеграции с несколькими компонентами Dapr в .NET, такими как вызов службы, pub/sub, привязки и управление состоянием.
Изолированный .NET Интеграция с компонентами Dapr в .NET с помощью модели выполнения функций Azure вне proc (OOP).

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

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

Samples Description
Функции Java Узнайте, как использовать расширение Dapr функций Azure с помощью Java.

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

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

Samples Description
Краткое руководство Приступая к работе с привязкой Dapr Pub/sub и HttpTrigger.
Dapr Kafka Узнайте, как использовать расширение Dapr функций Azure с компонентом Dapr привязки Kafka.
JavaScript Запустите приложение-функцию Dapr JavaScript и интегрируйте с вызовом службы Dapr, pub/sub, привязками и управлением состояниями с помощью функций Azure.

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

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

Samples Description
Функции PowerShell Узнайте, как использовать расширение Dapr функций Azure с PowerShell.

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

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

Samples Description
Dapr Kafka Узнайте, как использовать расширение Dapr функций Azure с компонентом Dapr привязки Kafka.
Python версии 1 Запустите приложение Python с расширением Dapr и используйте модель программирования Python для функций Azure версии 1 для интеграции с компонентами Dapr.
Python версии 2 Запустите приложение Dapr с помощью модели программирования Python для Функций Azure версии 2 для интеграции с компонентами Dapr.

Устранение неполадок

В этом разделе описывается устранение неполадок, которые могут возникнуть при использовании расширения Dapr для функций Azure.

Убедитесь, что Dapr включен в вашей среде

Если вы используете привязки и триггеры Dapr в Функциях Azure, а Dapr не включено в вашей среде, может появиться сообщение об ошибке: Чтобы включить Dapr в вашей среде: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information.

Проверка значения порта приложения в конфигурации Dapr

Расширение Dapr для функций Azure запускает HTTP-сервер на порту 3001 по умолчанию. Этот порт можно настроить с помощью переменнойDAPR_APP_PORT среды.

Если при запуске приложения "Функции Azure" задано неправильное значение порта приложения, может появиться сообщение об ошибке: Чтобы устранить это сообщение об ошибке: The Dapr sidecar is configured to listen on port {portInt}, but the app server is running on port {appPort}. This may cause unexpected behavior. For more information, visit [this link](https://aka.ms/azfunc-dapr-app-config-error).

  1. В параметрах Dapr приложения контейнера:

    • Если в коде используется триггер Dapr, убедитесь, что для порта приложения задано 3001 значение или значение переменной DAPR_APP_PORT среды.

    • Если в коде не используется триггер Dapr, убедитесь, что порт приложения не задан. Он должен быть пустым.

  2. Убедитесь, что вы указали правильное значение порта приложения в конфигурации Dapr.

    • Если вы используете приложения контейнеров Azure, укажите порт приложения в Bicep:

      DaprConfig: {
         ...
         appPort: <DAPR_APP_PORT>
         ...
      }
      
    • Если вы используете среду Kubernetes, задайте заметку dapr.io/app-port :

      annotations:
         ...
         dapr.io/app-port: "<DAPR_APP_PORT>"
         ...
      
    • Если вы разрабатываете локально, убедитесь, что вы устанавливаете --app-port при запуске приложения-функции с помощью Dapr:

      dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start 
      

Дальнейшие шаги

Дополнительные сведения о Dapr.