Расширение Dapr для Функции Azure
Расширение Dapr для Функции Azure — это набор средств и служб, которые позволяют разработчикам легко интегрировать Функции Azure с платформой распределенной среды выполнения приложений (Dapr).
Функции Azure — это служба вычислений на основе событий, которая предоставляет набор триггеров и привязок для легкого подключения к другим службам Azure. Dapr предоставляет набор стандартных блоков и рекомендаций по созданию распределенных приложений, включая микрослужбы, управление состоянием, паб/вложенный обмен сообщениями и многое другое.
Интеграция между Dapr и Functions позволяет создавать функции, реагирующие на события из Dapr или внешних систем.
Действие | Направление | Тип |
---|---|---|
Триггер входной привязки Dapr | Н/П | daprBindingTrigger |
Триггер вызова службы Dapr | Н/П | daprServiceInvocationTrigger |
Активация подписки на раздел Dapr | Н/П | daprTopicTrigger |
Извлечение в состоянии Dapr для выполнения | In | daprState |
Извлечение секретов Dapr для выполнения | In | daprSecret |
Сохранение значения в состоянии Dapr | выход | daprState |
Вызов другого приложения Dapr | выход | daprInvoke |
Публикация сообщения в разделе Dapr | выход | daprPublish |
Отправка значения в выходную привязку Dapr | выход | daprBinding |
Установка расширения
Установленный пакет NuGet расширения зависит от режима C# в процессе или изолированном рабочем процессе, который вы используете в приложении-функции:
Это расширение доступно путем установки пакета NuGet версии 1.0.0.
С использованием .NET CLI:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr
Установка пакета
Вы можете добавить расширение, добавив или заменив следующий код в host.json
файле:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Включение 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 считаются изменениями область приложения. При запуске приложения-контейнера в режиме нескольких редакций изменения этих параметров не будут создавать новую редакцию. Вместо этого все существующие редакции перезапускаются, чтобы убедиться, что они настроены с самыми актуальными значениями.
При настройке Dapr с помощью портал Azure перейдите к приложению-функции и выберите Dapr в меню слева:
Порты и прослушиватели 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, которые локально по умолчанию по умолчанию, но в контейнере по умолчанию7071
80
.
Типы привязки
Типы привязки, поддерживаемые для .NET, зависят от версии расширения и режима выполнения C#, что может быть одним из следующих типов:
Библиотека внутрипроцессных классов — это скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций.
Расширение Dapr поддерживает типы параметров в соответствии с таблицей ниже.
Привязка | Типы параметров |
---|---|
Триггер Dapr | daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
Входные данные Dapr | daprState daprSecret |
Выходные данные Dapr | daprState daprInvoke daprPublish daprBinding |
Примеры использования этих типов см. в разделе репозитория GitHub для расширения.
Попробуйте использовать расширение Dapr для Функции Azure
Узнайте, как использовать расширение Dapr для Функции Azure с помощью предоставленных примеров.
Примеры | 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 с помощью предоставленных примеров.
Примеры | Description |
---|---|
Функции Java | Узнайте, как использовать расширение dapr Функции Azure с помощью Java. |
Попробуйте использовать расширение Dapr для Функции Azure
Узнайте, как использовать расширение Dapr для Функции Azure с помощью предоставленных примеров.
Примеры | Description |
---|---|
Краткое руководство | Приступая к работе с привязкой Dapr Pub/sub и HttpTrigger . |
Dapr Kafka | Узнайте, как использовать расширение dapr Функции Azure с компонентом Dapr привязки Kafka. |
JavaScript | Запустите приложение-функцию Dapr JavaScript и интегрируйте с вызовом службы Dapr, pub/sub, привязками и управлением состояниями с помощью Функции Azure. |
Попробуйте использовать расширение Dapr для Функции Azure
Узнайте, как использовать расширение Dapr для Функции Azure с помощью предоставленных примеров.
Примеры | Description |
---|---|
Функции PowerShell | Узнайте, как использовать расширение dapr Функции Azure с PowerShell. |
Попробуйте использовать расширение Dapr для Функции Azure
Узнайте, как использовать расширение Dapr для Функции Azure с помощью предоставленных примеров.
Примеры | Description |
---|---|
Dapr Kafka | Узнайте, как использовать расширение dapr Функции Azure с компонентом Dapr привязки Kafka. |
Python версии 1 | Запустите приложение Python с расширением Dapr и используйте модель программирования Python версии 1 Функции Azure для интеграции с компонентами Dapr. |
Python v2 | Запустите приложение Dapr с помощью модели программирования Python версии 2 Функции Azure для интеграции с компонентами 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.
Если функция Azure развернута в приложениях контейнеров Azure, ознакомьтесь с инструкциями по включению Dapr для расширения Dapr для Функции Azure.
Если функция Azure развернута в Kubernetes, убедитесь, что конфигурация YAML развертывания содержит следующие заметки:
annotations: ... dapr.io/enabled: "true" dapr.io/app-id: "functionapp" # You should only set app-port if you are using a Dapr trigger in your code. dapr.io/app-port: "<DAPR_APP_PORT>" ...
Если вы используете функцию Azure локально, выполните следующую команду, чтобы убедиться, что вы запускаете приложение-функцию с dapr:
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
Проверка значения порта приложения в конфигурации 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).
В параметрах Dapr приложения контейнера:
Если в коде используется триггер Dapr, убедитесь, что для порта приложения задано
3001
значение или значение переменнойDAPR_APP_PORT
среды.Если в коде не используется триггер Dapr, убедитесь, что порт приложения не задан. Он должен быть пустым.
Убедитесь, что вы указали правильное значение порта приложения в конфигурации 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