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.
Warning
A extensão Dapr para Azure Functions se aposenta em 20 de abril de 2027 e está programada para remoção dos pacotes de extensão nessa data. A remoção se aplica ao pacote principal de extensões versão 4.42.0 e posteriores e ao pacote de extensão de visualização versão 4.60.0 e posteriores.
Essa remoção também se aplica àquelas versões pré-instaladas ou armazenadas em cache no Linux hospedadas por imagens ou distribuídas via hospedagem do Windows.
Migre diretamente para SDKs de clientes Dapr ou APIs HTTP Dapr a partir do seu código de função, e substitua os gatilhos Dapr por funções disparadas por HTTP que recebam callbacks Dapr. Aplicativos existentes podem fixar temporariamente o pacote principal em [4.*, 4.42.0) ou o bundle de pré-visualização em [4.*, 4.60.0) em host.json. Os aplicativos .NET podem continuar usando diretamente os pacotes NuGet correspondentes da extensão Dapr. Nem fixar um pacote mais antigo nem continuar usando os pacotes NuGet estende o suporte além de 20 de abril de 2027 ou altera a data de remoção.
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 aplicativos existentes que usam a extensão Dapr, que se aposenta em 20 de abril de 2027, selecione o pacote que seu app usa e adicione ou substitua o código a seguir no seu host.json arquivo. Essas faixas de versões excluem as versões programadas para remover a extensão Dapr.
O pacote antigo selecionado deve estar disponível no seu aplicativo. Definir um intervalo de versões não altera o conteúdo dos pacotes pré-instalados nas imagens Linux ou disponíveis no disco nas SKUs do Windows. Continuar a fixar um pacote antigo não estende o suporte além de 20 de abril de 2027 nem altera a data de remoção.
A extensão Dapr está programada para remoção em 20 de abril de 2027, a partir da versão 4.42.0 do pacote principal de extensão.
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 4.42.0)"
}
}
Migrar da extensão Dapr
Você pode continuar usando o Dapr no Aplicativos de Contêiner do Azure sem a extensão Azure Functions Dapr. Essa migração exige mudanças no código da função e na configuração de callback Dapr; instalar um SDK cliente sozinho não substitui os gatilhos Dapr.
Substitua as vinculações de entrada e saída Dapr por chamadas para um SDK cliente Dapr ou para as APIs HTTP Dapr. Use as APIs correspondentes para leituras e gravações de estado, recuperação secreta, invocação de serviços, publicação de mensagens e vinculações de saída. Preserve nomes de componentes, IDs de app, chaves de estado e metadados exigidos pelo seu app existente. Selecione APIs e pacotes SDK suportados no Aplicativos de Contêiner do Azure.
Substitua os gatilhos específicos da extensão por funções ativadas por HTTP e configure o Dapr para chamar os novos endpoints:
Gatilho existente Substituição daprServiceInvocationTriggerUm endpoint HTTP que lida com o método invocado. Veja invocação de serviço Dapr. daprTopicTriggerUm endpoint HTTP que recebe mensagens de tópico, com uma assinatura Dapr declarativa ou programática que roteia mensagens para ele. daprBindingTriggerUm endpoint HTTP que aceita os callbacks e OPTIONSrequisições de descoberta doPOSTbinding. Veja callbacks de ligação de entrada Dapr.Atualize a configuração Dapr no Aplicativos de Contêiner do Azure para usar a porta de escuta HTTP do app de função e o protocolo HTTP do app, em vez do ouvinte da extensão na porta
3001. Corresponda rotas de callback aos endpoints de função, levando em conta o prefixo padrão/apida rota. Se você usar assinaturas programáticas de publicação/sub, exponha o endpoint de descoberta exatamente no/dapr/subscribecaminho. Garanta que o Dapr possa alcançar os endpoints necessários enquanto preserva a autenticação e os controles de acesso do seu app.Verifique o acesso de estado e secreto, invocação de serviço, publicação, cargas úteis de retorno de chamada, confirmações, tentativas e tratamento de eventos duplicados antes de trocar o tráfego. Após todos os bindings e triggers específicos da extensão serem substituídos, remova o pacote ou registro de extensão Dapr e o pino temporário do bundle. Use a configuração normal de bundles exigida pelas suas ligações restantes.
As seções a seguir descrevem a configuração para aplicativos existentes que ainda utilizam a extensão Dapr antes de sua aposentadoria em 20 de abril de 2027.
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