Azure Functions における SignalR サービスのバインド
こちらの一連の記事では、Azure Functions で SignalR Service のバインドを使用して、Azure SignalR Service に接続されたクライアントに対して認証を行い、リアルタイム メッセージを送信する方法を説明しています。 Azure Functions ランタイム バージョン2.x 以上では、SignalR Service の入力および出力バインドがサポートされています。
アクション | Type |
---|---|
SignalR Service からのメッセージの処理 | トリガー バインド |
サービス エンドポイント URL とアクセス トークンを返す | 入力バインド |
SignalR Service メッセージの送信とグループの管理 | 出力バインド |
拡張機能のインストール
インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。
関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。
この NuGet パッケージをインストールすることによって、プロジェクトに拡張機能を追加します。
バンドルのインストール
SignalR Service 拡張機能は、host.json プロジェクト ファイルで指定される拡張機能バンドルの一部です。 バージョン 3.x 以降を対象とするプロジェクトを作成する場合は、このバンドルが既にインストールされている必要があります。 詳細については、「拡張機能のバンドル」を参照してください。
依存関係を追加する
SignalR Service の注釈を Java 関数で使用するには、azure-functions-java-library-signalr アーティファクト (バージョン 1.0 以降) への依存関係を pom.xml ファイルに追加する必要があります。
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-signalr</artifactId>
<version>1.0.0</version>
</dependency>
つながり
接続文字列または Microsoft Entra ID を使用して、Azure SignalR Service に接続できます。
接続文字列
Azure SignalR Service の接続文字列を取得する方法については、「Azure SignalR Service の Connection 文字列」を参照してください。
この接続文字列は、AzureSignalRConnectionString
という名前のアプリケーション設定に格納する必要があります。 バインド構成の connectionStringSetting
プロパティを使用して、アプリケーション設定名をカスタマイズできます。
ID ベースの接続
バージョン 1.7.0 以降を使用している場合、シークレットで接続文字列を使用する代わりに、アプリで Microsoft Entra ID を使用させることができます。
まず、Microsoft Entra ID にSignalR サービス所有者 ロールがあることを確認。
次に、共通のプレフィックス AzureSignalRConnectionString
を使用して設定を定義します。 バインド構成の connectionStringSetting
プロパティを使用して、プレフィックス名をカスタマイズできます。
このモードでは、設定には次の項目が含まれます。
プロパティ | 環境変数テンプレート | 説明 | 必須 | 例値 |
---|---|---|---|---|
サービス URI | AzureSignalRConnectionString__serviceUri |
サービス エンドポイントの URI。 "サービス URI" のみを構成する場合、拡張機能は DefaultAzureCredential 型を使用してサービスに対する認証を試みます。 | はい | https://mysignalrsevice.service.signalr.net |
トークン資格情報 | AzureSignalRConnectionString__credential |
接続のためにトークンを取得する方法を定義します。 デプロイされた Azure Function でマネージド ID 認証を使用する場合は、この設定を managedidentity に設定する必要があります。 この値は、ホスティング環境でマネージド ID が使用できる場合にのみ有効です。 |
いいえ | managedidentity |
クライアント ID | AzureSignalRConnectionString__clientId |
credential が managedidentity に設定されると、このプロパティによって、トークン取得時に使用されるユーザー割り当て ID を指定できます。 このプロパティは、アプリケーションに割り当てられたユーザー割り当て ID に相当するクライアント ID を受け取ります。 リソース ID とクライアント ID の両方を指定することは無効です。 指定されていない場合、システム割り当て ID が使用されます。 このプロパティは、credential を設定しないとき、ローカル開発シナリオで異なる方法で使用されます。 |
いいえ | 00000000-0000-0000-0000-000000000000 |
リソース ID | AzureSignalRConnectionString__managedIdentityResourceId |
credential が managedidentity に設定されると、このプロパティによって、トークン取得時に使用されるリソース ID を指定できます。 プロパティは、ユーザー定義マネージド ID のリソース ID に対応するリソース識別子を受け取ります。 リソース ID とクライアント ID の両方を指定することは無効です。 両方とも指定されていない場合は、システム割り当て ID が使用されます。 このプロパティは、credential を設定しないとき、ローカル開発シナリオで異なる方法で使用されます。 |
いいえ | /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup/providers/Microsoft.SignalRService/SignalR/mysignalrservice |
Note
ローカル、Azure アプリ Configuration、または Key Vault で local.settings.json
ファイルを使用して ID ベースの接続の設定を提供する場合は__
を設定名の:
に置き換えて、名前が正しく解決されるようにします。
たとえば、AzureSignalRConnectionString:serviceUri
のようにします。
複数のエンドポイントの設定
複数のエンドポイントを構成し、エンドポイントごとに ID 設定を指定することもできます。
この場合は、設定の前に Azure__SignalR__Endpoints__{endpointName}
を付けます。 {endpointName}
は、設定のグループをサービス エンドポイントに関連付けるために割り当てられた任意の名前です。 プレフィックス Azure__SignalR__Endpoints__{endpointName}
は、 connectionStringSetting
プロパティではカスタマイズできません。
プロパティ | 環境変数テンプレート | 説明 | 必須 | 例値 |
---|---|---|---|---|
サービス URI | Azure__SignalR__Endpoints__{endpointName}__serviceUri |
サービス エンドポイントの URI。 "サービス URI" のみを構成する場合、拡張機能は DefaultAzureCredential 型を使用してサービスに対する認証を試みます。 | はい | https://mysignalrsevice1.service.signalr.net |
エンドポイントの種類 | Azure__SignalR__Endpoints__{endpointName}__type |
サービス エンドポイントがプライマリかセカンダリかを示します。 指定しない場合の既定値は Primary です。 有効な値は Primary と Secondary です。大文字と小文字は区別されません。 |
いいえ | Secondary |
トークン資格情報 | Azure__SignalR__Endpoints__{endpointName}__credential |
接続のためにトークンを取得する方法を定義します。 デプロイされた Azure Function でマネージド ID 認証を使用する場合は、この設定を managedidentity に設定する必要があります。 この値は、ホスティング環境でマネージド ID が使用できる場合にのみ有効です。 |
いいえ | managedidentity |
クライアント ID | Azure__SignalR__Endpoints__{endpointName}__clientId |
credential が managedidentity に設定されると、このプロパティによって、トークン取得時に使用されるユーザー割り当て ID を指定できます。 このプロパティは、アプリケーションに割り当てられたユーザー割り当て ID に相当するクライアント ID を受け取ります。 リソース ID とクライアント ID の両方を指定することは無効です。 指定されていない場合、システム割り当て ID が使用されます。 このプロパティは、credential を設定しないとき、ローカル開発シナリオで異なる方法で使用されます。 |
いいえ | 00000000-0000-0000-0000-000000000000 |
リソース ID | Azure__SignalR__Endpoints__{endpointName}__managedIdentityResourceId |
credential が managedidentity に設定されると、このプロパティによって、トークン取得時に使用されるリソース ID を指定できます。 プロパティは、ユーザー定義マネージド ID のリソース ID に対応するリソース識別子を受け取ります。 リソース ID とクライアント ID の両方を指定することは無効です。 両方とも指定されていない場合は、システム割り当て ID が使用されます。 このプロパティは、credential を設定しないとき、ローカル開発シナリオで異なる方法で使用されます。 |
いいえ | /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/myrg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myusermanagedidentity |
複数のエンドポイントの詳細については、「 Scale SignalR Service with multiple instances (複数のインスタンスを含む SignalR Service のスケーリング)」を参照してください。
次のステップ
SignalR Service と Azure Functions を構成して一緒に使用する方法の詳細については、「Azure Functions development and configuration with Azure SignalR Service (Azure SignalR Service を使用した Azure Functions の開発と構成)」を参照してください。