使用 Azure Functions 的 Dapr 扩展,您可以通过触发器和绑定轻松地从 Azure 函数与 Dapr API 进行交互。 本指南介绍如何:
- 创建要用作 Dapr 状态存储的 Azure Redis 缓存。
- 部署 Azure 容器应用环境以托管容器应用。
- 在 Azure 容器应用上部署已启用 Dapr 的函数:
- 一个调用另一个服务的函数。
- 一个函数,用于创建订单,并通过 Dapr 状态存储将其保存。
- 验证两个应用之间的交互。
先决条件
设置环境
在终端中,登录到 Azure 帐户。
az login设置要使用的活动订阅。
az account set --subscription <subscription-id-or-name>注册
Microsoft.App和Microsoft.OperationalInsights命名空间。az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights克隆 Azure Functions 存储库的 Dapr 扩展。
git clone https://github.com/Azure/azure-functions-dapr-extension.git
创建资源组
指定可用区域之一,为容器应用创建资源组。
az group create --name <resource-group-name> --location <region>
部署 Azure 函数模板
切换到保存模板的文件夹。
cd azure-functions-dapr-extension/quickstarts/dotnet-isolated/deploy/aca创建部署组并指定要部署的模板。
az deployment group create --resource-group <resource-group-name> --template-file deploy-quickstart.bicep收到 CLI 提示时,输入资源名称前缀。 你选择的名称必须是数字和小写字母的组合,长度介于 3 到 24 个字符之间。
Please provide string value for 'resourceNamePrefix' (? for help): <your-resource-name-prefix>该模板部署以下资源,并且可能需要一段时间:
- 容器应用环境
- 函数应用程序
- Azure Blob 存储帐户和默认存储容器
- Application Insights
- 日志分析工作空间
- 用于状态管理的 Dapr 组件 (Azure Redis 缓存)
- 以下已启用 .NET Dapr 的函数:
OrderServiceCreateNewOrderRetrieveOrder
在 Azure 门户中,导航到资源组并选择“部署”以跟踪部署状态。
验证结果
成功部署模板后,运行以下命令以启动 OrderService 触发 CreateNewOrder 进程的函数。 新订单将创建并存储在 Redis 状态存储中。
在命令中:
- 将
{quickstart-functionapp-url}替换为实际的函数应用 URL。 例如:https://daprext-funcapp.wittyglacier-20884174.chinanorth3.azurecontainerapps.cn。 - 将
<quickstart-functionapp-name>替换为函数应用名称。
若要查找函数应用 URL,请在 Azure 门户中导航到 容器应用 ,然后选择新的容器应用。
Invoke-RestMethod -Uri 'https://<quickstart-functionapp-url.io>/api/invoke/<quickstart-functionapp-name>/CreateNewOrder' -Method POST -Headers @{"Content-Type" = "application/json"} -Body '{
"data": {
"value": {
"orderId": "Order22"
}
}
}'
查看日志
通过函数应用记录的数据存储在 Log Analytics 工作区的 ContainerAppConsoleLogs_CL 自定义表中。 分析结果第一次到达要等待几分钟,然后才能查询记录的数据。
可以通过 Azure 门户或命令行查看日志。
使用 Azure 门户
进入容器应用环境。
在边栏菜单中的 “监视”下,选择“ 日志”。
运行如下所示的查询,以验证函数应用是否正在从 Dapr 接收已调用的消息。
ContainerAppsConsoleLogs_CL | where RevisionName_s == $revision_name | where Log_s contains "Order22" | project Log_s
使用 Azure CLI
运行以下命令,以查看保存的状态。
Invoke-RestMethod -Uri 'https://<quickstart-functionapp-url.io>/api/retrieveorder' -Method GET
清理资源
完成本教程后,运行以下命令以删除资源组以及创建的所有资源。
az group delete --resource-group <resource-group-name>