Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A Extensão daPr para Azure Functions é um conjunto de ferramentas e serviços que permitem que os desenvolvedores integrem facilmente o Azure Functions à plataforma Dapr (Distributed Application Runtime ).
O Azure Functions é um serviço de computação controlado por eventos que fornece um conjunto de gatilhos e associações para se conectar facilmente com outros serviços do Azure. O Dapr fornece um conjunto de blocos de construção e práticas recomendadas para a criação de aplicativos distribuídos, incluindo microsserviços, gerenciamento de estado, pub/sub-mensagens e muito mais.
Com a integração entre o Dapr e o Functions, você pode criar funções que reagem a eventos de dapr ou sistemas externos.
| Ação | Direção | Tipo |
|---|---|---|
| Disparar em uma associação de entrada dapr | N/A | daprBindingTrigger |
| Disparar em uma invocação de serviço daPr | N/A | daprServiceInvocationTrigger |
| Disparar em uma assinatura de tópico do Dapr | N/A | daprTopicTrigger |
| Efetuar pull no estado dapr para uma execução | In | daprState |
| Efetuar pull de segredos dapr para uma execução | In | daprSecret |
| Salvar um valor em um estado dapr | Out | daprState |
| Invocar outro aplicativo Dapr | Out | daprInvoke |
| Publicar uma mensagem em um tópico dapr | Out | daprPublish |
| Enviar um valor para uma associação de saída dapr | Out | daprBinding |
Instalar extensão
O pacote NuGet de extensão instalado depende do processo de trabalho isolado ou no modo C# que você está usando em seu aplicativo de funções:
Essa extensão está disponível instalando o pacote NuGet, versão 1.0.0.
Usando a CLI do .NET:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr
Instalar o pacote
Para poder usar essa extensão de associação em seu aplicativo, verifique se o arquivo host.json na raiz do projeto contém esta extensionBundle referência:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
Neste exemplo, o version valor instrui o host do [4.0.0, 5.0.0) Functions a usar uma versão de pacote pelo menos 4.0.0 menor que 5.0.0, que inclui todas as versões potenciais do 4.x. Essa notação mantém efetivamente seu aplicativo na versão secundária mais recente disponível do pacote de extensão v4.x.
Quando possível, você deve usar a versão principal do pacote de extensão mais recente e permitir que o runtime mantenha automaticamente a versão secundária mais recente. Você pode exibir o conteúdo do pacote mais recente na página de lançamento dos pacotes de extensão. Para obter mais informações, consulte os pacotes de extensão do Azure Functions.
Habilitação de dapr
Você pode configurar o Dapr usando vários [argumentos e anotações][dapr-args] com base no contexto de runtime. Você pode configurar o Dapr para o Azure Functions por meio de dois canais:
- Modelos de IaC (infraestrutura como código), como em modelos do Bicep ou arm (Azure Resource Manager)
- O portal do Azure
Ao usar um modelo de IaC, especifique os seguintes argumentos na properties seção da definição de recurso do aplicativo de contêiner.
DaprConfig: {
enabled: true
appId: '${envResourceNamePrefix}-funcapp'
appPort: 3001
httpReadBufferSize: ''
httpMaxRequestSize: ''
logLevel: ''
enableApiLogging: true
}
Os valores de configuração de Dapr acima são considerados alterações no escopo do aplicativo. Quando você executa um aplicativo de contêiner no modo de revisão múltipla, as alterações nessas configurações não criarão uma nova revisão. Em vez disso, todas as revisões existentes são reiniciadas para garantir que elas estejam configuradas com os valores mais up-todata.
Ao configurar o Dapr usando o portal do Azure, navegue até seu aplicativo de funções e selecione Dapr no menu esquerdo:
Portas e ouvintes dapr
Quando você está disparando uma função do Dapr, a extensão expõe a porta 3001 automaticamente para ouvir solicitações de entrada do sidecar da Dapr.
Importante
A porta 3001 só será exposta e escutada se um gatilho Dapr for definido no aplicativo de funções. Ao usar o Dapr, o sidecar aguarda para receber uma resposta da porta definida antes de concluir a instanciação.
Não defina a dapr.io/port anotação ou --app-port , a menos que você tenha um gatilho. Isso pode bloquear seu aplicativo do sidecar dapr.
Se você estiver usando apenas associações de entrada e saída, a porta 3001 não precisará ser exposta ou definida.
Por padrão, quando o Azure Functions tenta se comunicar com o Dapr, ele chama Dapr pela porta resolvida da variável DAPR_HTTP_PORTde ambiente. Se essa variável for nula, ela usará como padrão a porta 3500.
Você pode substituir o endereço Dapr usado por associações de entrada e saída definindo a DaprAddress propriedade na function.json associação (ou no atributo). Por padrão, ele usa http://localhost:{DAPR_HTTP_PORT}.
O aplicativo de funções ainda expõe outra porta e um ponto de extremidade para itens como gatilhos HTTP, que padrão localmente são 7071, mas em um contêiner, o padrão é 80.
Tipos de associação
Os tipos de associação com suporte para .NET dependem da versão da extensão e do modo de execução C#, que pode ser um dos seguintes:
Uma biblioteca de classes em processo é uma função C# compilada executada no mesmo processo que o runtime do Functions.
A Extensão dapr dá suporte a tipos de parâmetro de acordo com a tabela abaixo.
| Binding | Tipos de parâmetro |
|---|---|
| Gatilho dapr |
daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
| Entrada dapr |
daprState daprSecret |
| Saída dapr |
daprState daprInvoke daprPublish daprBinding |
Para obter exemplos usando esses tipos, consulte o repositório GitHub para a extensão.
Experimentar a extensão dapr para o Azure Functions
Saiba como usar a Extensão dapr para o Azure Functions por meio dos exemplos fornecidos.
| Samples | Description |
|---|---|
| Início Rápido | Comece a usar a associação Dapr Pub/sub e HttpTrigger. |
| Dapr Kafka | Saiba como usar a Extensão dapr do Azure Functions com o componente Dapr de associações kafka. |
| .NET em processo | Saiba como usar o modelo em processo do Azure Functions para integrar com vários componentes da Dapr no .NET, como Invocação de Serviço, Pub/sub, Associações e Gerenciamento de Estado. |
| .NET Isolado | Integre com componentes dapr no .NET usando o modelo de execução OOP (out-of-proc) do Azure Functions. |
Experimentar a extensão dapr para o Azure Functions
Saiba como usar a Extensão dapr para o Azure Functions por meio dos exemplos fornecidos.
| Samples | Description |
|---|---|
| Funções Java | Saiba como usar a Extensão dapr do Azure Functions usando Java. |
Experimentar a extensão dapr para o Azure Functions
Saiba como usar a Extensão dapr para o Azure Functions por meio dos exemplos fornecidos.
| Samples | Description |
|---|---|
| Início Rápido | Comece a usar a associação Dapr Pub/sub e HttpTrigger. |
| Dapr Kafka | Saiba como usar a Extensão dapr do Azure Functions com o componente Dapr de associações kafka. |
| JavaScript | Execute um aplicativo de função JavaScript Dapr e integre-se ao Dapr Service Invocation, Pub/sub, Bindings e State Management usando o Azure Functions. |
Experimentar a extensão dapr para o Azure Functions
Saiba como usar a Extensão dapr para o Azure Functions por meio dos exemplos fornecidos.
| Samples | Description |
|---|---|
| Funções do PowerShell | Saiba como usar a Extensão dapr do Azure Functions com o PowerShell. |
Experimentar a extensão dapr para o Azure Functions
Saiba como usar a Extensão dapr para o Azure Functions por meio dos exemplos fornecidos.
| Samples | Description |
|---|---|
| Dapr Kafka | Saiba como usar a Extensão dapr do Azure Functions com o componente Dapr de associações kafka. |
| Python v1 | Execute um aplicativo Python do tamanho de dapr e use o modelo de programação python v1 do Azure Functions para se integrar aos componentes do Dapr. |
| Python v2 | Inicie um aplicativo Dapr usando o modelo de programação do Python v2 do Azure Functions para se integrar aos componentes do Dapr. |
Resolução de problemas
Esta seção descreve como solucionar problemas que podem ocorrer ao usar a extensão Dapr para o Azure Functions.
Verifique se o Dapr está habilitado em seu ambiente
Se você estiver usando associações de Dapr e gatilhos no Azure Functions e o Dapr não estiver habilitado em seu ambiente, você poderá receber a mensagem de erro: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information. Para habilitar o Dapr em seu ambiente:
Se a função do Azure for implantada nos Aplicativos de Contêiner do Azure, consulte as instruções de habilitação do Dapr para a extensão Dapr para o Azure Functions.
Se a função do Azure for implantada no Kubernetes, verifique se a configuração yaml da implantação tem as seguintes anotações:
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>" ...Se você estiver executando a função do Azure localmente, execute o seguinte comando para garantir que você esteja executando o aplicativo de funções com o Dapr:
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
Verificar o valor da porta do aplicativo na configuração do Dapr
A extensão Dapr do Azure Functions inicia um servidor HTTP na porta 3001 por padrão. Você pode configurar essa porta usando a variável deDAPR_APP_PORT ambiente.
Se você fornecer um valor de porta de aplicativo incorreto ao executar um aplicativo do Azure Functions, poderá receber a mensagem de erro: 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). Para resolver esta mensagem de erro:
Nas configurações de Dapr do aplicativo de contêiner:
Se você estiver usando um gatilho dapr em seu código, verifique se a porta do aplicativo está definida
3001como ou com o valor da variável deDAPR_APP_PORTambiente.Se você não estiver usando um gatilho Dapr em seu código, verifique se a porta do aplicativo não está definida. Deve estar vazio.
Verifique se você fornece o valor correto da porta do aplicativo na configuração da Dapr.
Se você estiver usando os Aplicativos de Contêiner do Azure, especifique a porta do aplicativo no Bicep:
DaprConfig: { ... appPort: <DAPR_APP_PORT> ... }Se você estiver usando um ambiente do Kubernetes, defina a
dapr.io/app-portanotação:annotations: ... dapr.io/app-port: "<DAPR_APP_PORT>" ...Se você estiver desenvolvendo localmente, verifique se você definiu
--app-portao executar o aplicativo de funções com o Dapr:dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start