このクイック スタートでは、既定の Azure Storage プロバイダー を使用して ID ベースの接続を使用するようにDurable Functions アプリを構成し、シークレットを管理せずにアプリがストレージ アカウントにアクセスできるようにする方法について説明します。 Microsoft Entra ID からの 管理された ID は Azure プラットフォームによって管理されます。あなたはシークレットをプロビジョニングしたり更新したりする必要がありません。
この記事の内容:
- ローカル開発のセットアップ - ローカル テストに Azurite または開発者の資格情報を使用する
Azure — マネージド ID を有効にして関数アプリを構成する
注
マネージド ID は、Durable Functions 拡張機能 バージョン 2.7.0 以降でサポートされています。
Azure アカウントをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
前提条件
このクイック スタートを完了するには、次のものが必要です。
- Azure ポータルで作成された既存のDurable Functions プロジェクト、またはAzureに配置されたローカル Durable Functions プロジェクト。
- AzureでDurable Functions アプリを実行する知識。
Azureに既存のDurable Functions プロジェクトをデプロイしていない場合は、次のいずれかのクイック スタートから開始することをお勧めします。
- 最初の永続関数を作成する - C#
- 最初の持続的な関数を作成する - JavaScript
- 最初の持続的関数を作成する - Python
- 最初の持続的な関数を作成する - PowerShell
- 最初の持続的関数を作成する - Java
ローカル開発のセットアップ
ローカル開発には 2 つのオプションがあります。 資格情報をAzureせずにローカルテストを迅速に行うには Azurite を使用します。 実際のAzure Storage アカウントに対して ID ベースの接続をテストする必要がある場合は、代わりに開発者の資格情報を使用してください。
オプション 1: Azure Storage エミュレーターを使用する
ローカルで開発する場合は、Azure Storageのローカル エミュレーターである Azurite を使用することをお勧めします。 local.settings.jsonで "AzureWebJobsStorage": "UseDevelopmentStorage=true" を指定して、エミュレーター用にアプリを構成します。
オプション 2: ローカル開発用の ID ベースの接続
厳密に言えば、マネージド ID は、Azureで実行する場合にのみアプリで使用できます。 ただし、開発者の資格情報を使用して Azure リソースに対して認証することで、ID ベースの接続を使用するようにローカルで実行されているアプリを構成することもできます。 その後、Azureにデプロイすると、アプリは代わりにマネージド ID 構成を利用します。
開発者の資格情報を使用する場合、接続は次の場所からこの順序でトークンの取得を試みます。
- Microsoft アプリケーション間で共有されるローカル キャッシュ
- Visual Studioの現在のユーザー コンテキスト
- Visual Studio Codeの現在のユーザー コンテキスト
- Azure CLIの現在のユーザー コンテキスト
これらのオプションのいずれも成功しなかった場合は、アプリが認証トークンを取得できないことを示すエラーが表示されます。 Azure Storage アカウントにアクセスできるアカウントを使用して、一覧表示されているツールのいずれかにサインインしていることを確認します。
ローカル開発者 ID を使用するようにランタイムを構成する
local.settings.jsonでAzure Storage アカウントの名前を指定します。次に例を示します。
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }Azure ポータルで、Azure Storage アカウント リソースに移動します。
Access Control (IAM) タブを選択し、ロールの割り当ての追加を選択します。
次の各ロールを自分に割り当てます。 ロールごとに、
+[メンバーの選択 <]/c0> を選択し>Visual Studio、Visual Studio Code、またはAzure CLIにサインインするために使用する電子メールを検索します。 - ストレージ キュー データ共同作成者
- ストレージ ブロブ データ コントリビューター
- ストレージ テーブル データ共同作成者
注
これらは、Azureにデプロイするときにマネージド ID に必要な 3 つのロールと同じです。 マネージド ID へのアクセス ロールの割り当てを参照してください。
Azureにデプロイされたアプリの ID ベースの接続
マネージド ID リソースを有効にする
開始するには、アプリケーションのマネージド ID を有効にします。 関数アプリでは、システム割り当てマネージド ID またはユーザー割り当てマネージド ID のいずれかが必要になります。 関数アプリのマネージド ID を有効にし、2 種類の ID の違いについて確認するには、マネージド ID の概要に関するページを参照してください。
マネージド ID にアクセス ロールを割り当てる
Azure ポータルでアプリのAzure Storage リソースに移動し、assign 3 つのロールベースのアクセス制御 (RBAC) ロールをマネージド ID リソースに移動します。
- ストレージ キュー データ共同作成者
- ストレージ ブロブ データ コントリビューター
- ストレージ テーブル データ共同作成者
自分の ID リソースを見つけるには、[アクセスの割り当て先] の [マネージド ID] を選んでから、[+ メンバーの選択] を選びます
マネージド ID 構成をアプリに追加する
アプリのマネージド ID を使うには、その前にアプリの設定をいくつか変更する必要があります。
Azure ポータルの Settings の関数アプリ リソース メニューで、Environment 変数 を選択します。
Azure ストレージ アカウントをアプリケーションにリンクする設定を追加します。
アプリが実行されているクラウドに応じて、"次のいずれかの方法" を使用します。
Azure cloud: アプリが global Azure で実行されている場合は、Azureストレージ アカウント名を識別する設定
AzureWebJobsStorage__accountNameを追加します。 値の例:mystorageaccount123非Azure クラウド: Azure外のクラウドでアプリケーションを実行する場合は、アカウント名ではなくストレージ アカウントの特定のサービス URI (または endpoints) を提供するために、次の 3 つの設定を追加する必要があります。
設定名:
AzureWebJobsStorage__blobServiceUri値の例:
https://mystorageaccount123.blob.core.windows.net/設定名:
AzureWebJobsStorage__queueServiceUri値の例:
https://mystorageaccount123.queue.core.windows.net/設定名:
AzureWebJobsStorage__tableServiceUri値の例:
https://mystorageaccount123.table.core.windows.net/
これらの URI 変数の値は、ストレージ アカウント情報の [エンドポイント] タブから入手できます。
注
Azure Government またはグローバル Azureとは別の他のクラウドを使用している場合は、ストレージ アカウント名だけでなく、特定のサービス URI を提供するオプションを使用する必要があります。 Azure Government で Azure Storage を使用する方法の詳細については、「Azure Government で Storage API を使用した開発」を参照してください。
マネージド ID の構成を終了します (設定を変更した後、忘れずに [適用] をクリックしてください)。
システム割り当て ID を使用する場合は、他の変更は行いません。
"ユーザー割り当て ID" を使う場合は、次の設定をアプリの構成に追加します。
AzureWebJobsStorage__credential: 「managedidentity」と入力します
AzureWebJobsStorage__clientId: この GUID 値はマネージド ID リソースから取得します
注
Durable Functions はユーザー割り当て ID を使用する場合、サポートされません
managedIdentityResourceId。clientIdを代わりに使用します。
構成の確認
マネージド ID の構成が機能することを確認するには:
- Azure ポータルで、関数アプリに移動し、(HTTP トリガー関数を使用するなどして) Durable Functionsオーケストレーションをトリガーします。
- 状態エンドポイントに対してクエリを実行するか、[ 監視 ] タブを確認して、オーケストレーションが正常に完了したことを確認します。
- 認証エラーが表示された場合は、次のことを確認します。
- 3 つのストレージ データ共同作成者ロールはすべて、正しい ID に割り当てられます。
-
AzureWebJobsStorageコネクションストリング設定が削除されます。 -
AzureWebJobsStorage__accountName(またはサービス URI) の設定が正しいです。