この一連の記事では、Azure Functions で Azure Web PubSub バインドを使用して、 Azure Web PubSub に接続されているクライアントに対する認証、リアルタイム メッセージの送信を行う方法について説明します。
| アクション | タイプ |
|---|---|
| Web PubSub からのクライアント イベントを処理する | トリガー バインド |
| HTTP トリガーを使用して Web PubSub からのクライアント イベントを処理するか、クライアント アクセス URL とトークンを返す | 入力バインド |
| サービス API の呼び出し | 出力バインド |
拡張機能のインストール
インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。
関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。
この NuGet パッケージをインストールすることによって、プロジェクトに拡張機能を追加します。
バンドルのインストール
アプリでこのバインド拡張機能を使用できるようにするには、プロジェクトのルートにある host.json ファイルに次の extensionBundle 参照が含まれていることを確認します。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
この例では、versionの[4.0.0, 5.0.0)値は、少なくとも4.0.0が5.0.0未満のバンドル バージョン (4.x のすべての潜在的なバージョンを含む) を使用するように Functions ホストに指示します。 この表記は、v4.x 拡張機能バンドルの利用可能な最新のマイナー バージョンでアプリを効果的に維持します。
可能であれば、最新の拡張機能バンドルメジャー バージョンを使用し、ランタイムが最新のマイナー バージョンを自動的に維持できるようにする必要があります。 最新のバンドルの内容は、 拡張機能バンドルのリリース ページで確認できます。 詳細については、 Azure Functions 拡張機能バンドルに関するページを参照してください。
注
Java 用 Web PubSub 拡張機能はまだサポートされていません。
重要な概念
(1)-(2) クライアント接続を生成する HttpTrigger を使用した WebPubSubConnection 入力バインド。
(3)-(4) サービス要求を処理する WebPubSubTrigger トリガー バインドまたは HttpTrigger を使用した WebPubSubContext 入力バインド。
(5)-(6) サービスに何らかの実行を要求する WebPubSub 出力バインド。
接続
接続文字列または Microsoft Entra ID を使用して、Azure Web PubSub サービスに接続できます。
接続文字列
既定では、WebPubSubConnectionString という名前のアプリケーション設定を使用して、Web PubSub 接続文字列を格納します。 接続に別の設定名を使用する場合は、バインド定義のキー名として明示的に設定する必要があります。 ローカル開発時には、local.settings.json ファイルのValues コレクションにもこの設定を追加する必要があります。
重要
接続文字列には、アプリケーションが Azure Web PubSub サービスにアクセスするために必要な認可情報が含まれています。 接続文字列内のアクセス キーは、サービスのルート パスワードに似ています。 最適なセキュリティを確保するために、関数アプリでは、接続文字列を使用するのではなく、Web PubSub サービスに接続するときに マネージド ID を 使用する必要があります。
Web PubSub と Azure Functions を一緒に構成して使用する方法の詳細については、「 Tutorial: Azure Functions と Azure Web PubSub サービスを使用してサーバーレス通知アプリを作成する」を参照してください。
ID ベースの接続
アクセス キーで接続文字列を使用する代わりに、Azure Web PubSub Functions Extensions v1.10.0 以降を使用している場合は、Microsoft Entra ID を使用して Azure Web PubSub に対して認証するように関数アプリを構成できます。
この方法では、シークレットを管理する必要がなくなります。運用環境のワークロードに推奨されます。
[前提条件]
関数アプリで使用される Microsoft Entra ID に、ターゲット Web PubSub リソースに対する適切な Azure RBAC ロールが付与されていることを確認します。
コンフィギュレーション
Azure Functions の ID ベースの接続では、共通のプレフィックスを共有する一連の設定が使用されます。 既定では、Azure Web PubSub Functions 拡張機能では、プレフィックスが WebPubSubConnectionStringの設定が検索されます。 このプレフィックスは、トリガーまたはバインドで connection プロパティを設定することでカスタマイズできます。
Azure Web PubSub の場合、指定する必要があるサービス固有の設定は、サービス エンドポイント URI です。
| プロパティ | 環境変数テンプレート | Description | 必須 |
|---|---|---|---|
| サービスのリソース識別子 (URI) | WebPubSubConnectionString__serviceUri |
Web PubSub サービス エンドポイントの URI。 | イエス |
Azure Functions サービスでホストされている場合、ID ベースの接続では、マネージド ID が使用されます。 システム割り当て ID は既定で使用されますが、ユーザー割り当て ID は指定できます。 ID をカスタマイズする方法の詳細については、「ID ベースの接続の共通プロパティ」を参照してください。
ローカル開発などの他のコンテキストで実行する場合は、代わりに開発者 ID が使用されますが、カスタマイズすることもできます。 ID ベースの接続によるローカル開発に関するページをご覧ください。
構成例
次の例は、既定の設定で ID ベースを構成する方法を示しています。
{
"WebPubSubConnectionString__serviceUri": "https://your-webpubsub.webpubsub.azure.com"
}
注
ローカル、local.settings.json、または Key Vault で ファイルを使用して ID ベースの接続の設定を提供する場合は__を設定名の:に置き換えて、名前が正しく解決されるようにします。
たとえば、「 WebPubSubConnectionString:serviceUri 」のように入力します。