次の方法で共有


Azure Container Apps で Azure Functions 用の Dapr 拡張機能をデプロイする

Azure Functions の Dapr 拡張機能 を使用すると、トリガーとバインドを使用して、Azure 関数から Dapr API を簡単に操作できます。 このガイドでは、以下の方法について説明します。

  • Dapr 状態ストアとして使用する Azure Redis Cache を作成する
  • コンテナー アプリをホストするための Azure Container Apps 環境をデプロイする
  • Azure Container Apps に次のようなDapr 対応関数をデプロイします。
    • もう一方のサービスを呼び出す 1 つの関数
    • オーダーを作成し、Dapr ステートストア経由でストレージに保存する 1 つの関数
  • 2 つのアプリ間の相互作用を確認する

前提条件

環境を設定する

  1. ターミナルで、Azure サブスクリプションにログインします。

    az login
    
  2. 使用するアクティブなサブスクリプションで Azure のログインを設定します。

    az account set --subscription {subscription-id-or-name}
    
  3. Azure Functions リポジトリ用の Dapr 拡張機能 をクローンする

    git clone https://github.com/Azure/azure-functions-dapr-extension.git
    

リソース グループの作成

使用可能なリージョンのいずれかを指定して、コンテナー アプリのリソース グループを作成します。

az group create --name {resourceGroupName} --location {region}

Azure 関数テンプレートをデプロイする

  1. ルート ディレクトリから、テンプレートを保持しているフォルダーに移動します。

    cd quickstarts/dotnet-isolated/deploy/aca
    
  2. デプロイ グループを作成し、デプロイするテンプレートを指定します。

    az deployment group create --resource-group {resourceGroupName} --template-file deploy-quickstart.bicep
    
  3. 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
  4. Azure portal でリソース グループに移動し、[デプロイ] を選択してデプロイの状態を追跡します。

    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 の使用

  1. お使いのコンテナー アプリ環境に移動します。

  2. 左側のメニューの [監視] [ログ] を選択します。

  3. 次のようなクエリを実行して、関数アプリが 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