Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширение 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
При активации функции из 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.
Если функция 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