Azure Functions の Dapr 拡張機能 を使用すると、トリガーとバインドを使用して、Azure 関数から Dapr API を簡単に操作できます。 このガイドでは、以下の方法について説明します。
- Dapr 状態ストアとして使用する Azure Redis Cache を作成する
- コンテナー アプリをホストするための Azure Container Apps 環境をデプロイする
- Azure Container Apps に次のようなDapr 対応関数をデプロイします。
- もう一方のサービスを呼び出す 1 つの関数
- オーダーを作成し、Dapr ステートストア経由でストレージに保存する 1 つの関数
- 2 つのアプリ間の相互作用を確認する
前提条件
環境を設定する
ターミナルで、Azure サブスクリプションにログインします。
az login
使用するアクティブなサブスクリプションで 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}
Azure 関数テンプレートをデプロイする
ルート ディレクトリから、テンプレートを保持しているフォルダーに移動します。
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 Storage アカウントと既定のストレージ コンテナー
- Application Insights
- Log Analytics ワークスペース
- 状態管理用の Dapr コンポーネント (Azure Redis Cache)
- 次の .NET Dapr 対応関数:
OrderService
CreateNewOrder
RetrieveOrder
Azure portal でリソース グループに移動し、[デプロイ] を選択してデプロイの状態を追跡します。
結果を確認する
テンプレートが正常にデプロイされたら、次のコマンドを実行して、 CreateNewOrder
プロセスをトリガーする OrderService
関数を開始します。 新しいオーダーが作成され、Redis ステートストアに格納されます。
コマンドで次の手順を実行します。
-
{quickstart-functionapp-url}
を実際の関数アプリの URL に置き換えます。 (例:https://daprext-funcapp.wittyglacier-20884174.eastus.azurecontainerapps.io
)。 -
{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 portal またはコマンド ラインを使用します。
Azure Portal の使用
お使いのコンテナー アプリ環境に移動します。
左側のメニューの [監視] で [ログ] を選択します。
次のようなクエリを実行して、関数アプリが 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