使用 Azure Functions 的 Dapr 扩展,可以使用触发器和绑定从 Azure 函数轻松与 Dapr API 进行交互。 本指南介绍如何:
- 创建 Azure Redis 缓存以用作 Dapr 状态存储
- 部署 Azure 容器应用环境以托管容器应用
- 在 Azure 容器应用上部署已启用 Dapr 的函数:
- 调用另一个服务的函数
- 一个函数,用于创建订单并通过 Dapr 状态存储将其保存到存储中
- 验证两个应用之间的交互
在终端中登录到 Azure 订阅。
az cloud set -n AzureChinaCloud az login # az cloud set -n AzureCloud //means return to Public Azure.
使用要使用的活动订阅设置 Azure 登录。
az account set --subscription {subscription-id-or-name}
克隆 Azure Functions 存储库的 Dapr 扩展。
git clone https://github.com/Azure/azure-functions-dapr-extension.git
指定可用区域之一,为容器应用创建资源组。
az group create --name {resourceGroupName} --location {region}
从根目录更改为保存模板的文件夹。
cd quickstarts/dotnet-isolated/deploy/aca
创建部署组并指定要部署的模板。
az deployment group create --resource-group {resourceGroupName} --template-file deploy-quickstart.bicep
收到 CLI 提示时,输入资源名称前缀。 所选名称必须是数字和小写字母的组合,长度介于 3 到 24 个字符之间。
Please provide string value for 'resourceNamePrefix' (? for help): {your-resource-name-prefix}
该模板部署以下资源,并且可能需要一段时间:
- 容器应用环境
- 函数应用
- Azure Blob 存储帐户和默认存储容器
- Application Insights
- Log Analytics 工作区
- 面向状态管理的 Dapr 组件(Azure Redis 缓存)
- 以下启用了 .NET Dapr 的函数:
OrderService
CreateNewOrder
RetrieveOrder
在 Azure 门户中,导航到资源组并选择“部署”以跟踪部署状态。
成功部署模板后,运行以下命令启动 OrderService
,以触发 CreateNewOrder
进程。 此时,将创建新订单并将其存储在 Redis 状态存储中。
在命令中:
- 将
{quickstart-functionapp-url}
替换为实际的函数应用 URL。 例如:https://daprext-funcapp.wittyglacier-20884174.chinanorth3.azurecontainerapps.dev
。 - 将
{quickstart-functionapp-name}
替换为函数应用名称。
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 门户或命令行查看日志。
导航到容器应用环境。
在左侧菜单中的“监视”下,选择“日志”。
运行如下所示的查询,以验证函数应用是否正在从 Dapr 接收已调用的消息。
ContainerAppsConsoleLogs_CL | where RevisionName_s == $revision_name | where Log_s contains "Order22" | project Log_s
运行以下命令,以查看保存的状态。
Invoke-RestMethod -Uri 'https://{quickstart-functionapp-url.io}/api/retrieveorder' -Method GET
完成本教程后,运行以下命令以删除资源组以及创建的所有资源。
az group delete --resource-group $RESOURCE_GROUP