Azure Functions における Azure Tables のバインド
Azure Functions はトリガーとバインドを使用して Azure Tables と統合されます。 Azure Tables との統合により、Azure Cosmos DB for Table および Azure Table Storage を使用してデータを読み書きする関数を構築できます。
アクション | Type |
---|---|
関数でテーブル データを読み取る | 入力バインド |
関数からテーブル データを書き込めるようにする | 出力バインド |
拡張機能のインストール
インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。
関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。
拡張機能をインストールするプロセスは、拡張機能のバージョンによって異なります。
このバージョンでは、シークレットではなく ID を使用して接続する機能が導入されています。 マネージド ID を使用して関数アプリを構成するチュートリアルについては、ID ベースの接続を使用した関数アプリの作成に関 するチュートリアルを参照してください。
このバージョンでは、Azure.Data.Tables
からの型にバインドできます。 また、Azure Cosmos DB for Table を使用する機能も導入されています。
この拡張機能を使用するには、BLOB とキューのために拡張機能のバージョン 5.x 以降を使用するプロジェクトに、Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet パッケージをインストールします。
.NET CLI の使用
# Install the Azure Tables extension
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Tables --version 1.0.0
# Update the combined Azure Storage extension (to a version which no longer includes Azure Tables)
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage --version 5.0.0
注意
Azure BLOB、Azure キュー、Azure テーブルでは、個別の拡張機能が使用され、個別に参照されるようになりました。 たとえば、.NET 分離プロセス アプリの 3 つのサービスすべてに対してトリガーとバインドを使用するには、次のパッケージをプロジェクトに追加する必要があります。
- Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs
- Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
- Microsoft.Azure.Functions.Worker.Extensions.Tables
以前、拡張機能は Microsoft.Azure.Functions.Worker.Extensions.Storage、バージョン 4.x としてまとめて出荷されました。 この同じパッケージには 5.x バージョンもあり、BLOB とキューのみの分割パッケージを参照します。 このため、パッケージ参照を古いバージョンからアップグレードする場合は、新しい Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet パッケージを追加で参照する必要がある場合があります。 また、このような新しい分割パッケージを参照するとき、結合されたストレージ パッケージの古いバージョンを参照していないことを確認してください。同じバインディングの 2 つの定義による競合の発生を防止できます。
F# を使用してアプリケーションを記述する場合、アプリのスタートアップ構成の一部としてこの拡張機能を構成することもできます。 ConfigureFunctionsWorkerDefaults()
または ConfigureFunctionsWebApplication()
の呼び出しで、IFunctionsWorkerApplication
パラメーターを受け取るデリゲートを追加します。 次に、そのデリゲートの本文内でオブジェクトの ConfigureTablesExtension()
を呼び出します。
let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
appBuilder.ConfigureTablesExtension() |> ignore
) |> ignore
バンドルのインストール
Azure Tables のバインドは、host.json プロジェクト ファイルで指定される拡張機能バンドルの一部です。 バインドのバージョンを変更するために、または、バンドルがまだインストールされていない場合、このバンドルに変更を加えることが必要な場合があります。 詳細については、「拡張機能のバンドル」を参照してください。
このバージョンでは、シークレットではなく ID を使用して接続する機能が導入されています。 マネージド ID を使用して関数アプリを構成するチュートリアルについては、ID ベースの接続を使用した関数アプリの作成に関 するチュートリアルを参照してください。
このバージョンの拡張機能は、host.json
ファイルで次のコードを追加するか、または置き換えることによって、プレビュー拡張機能バンドル v3 から追加できます。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.3.0, 4.0.0)"
}
}
バインドの種類
.NET でサポートされるバインドの種類は、拡張機能のバージョンと C# 実行モードの両方によって異なります。これは次のいずれかになります。
分離ワーカー プロセス クラス ライブラリでコンパイルされた C# 関数は、ランタイムから分離されたプロセスで実行されます。
バージョンを選択すると、モードとバージョンのバインドの種類の詳細が表示されます。
分離ワーカー プロセスでは、以下の表に従ってパラメーターの型がサポートされています。 Azure.Data.Tables の型へのバインドのサポートはプレビュー段階です。
Azure テーブルの入力バインド
1 つのテーブル エンティティを操作する場合、Azure テーブルの入力バインドは次の型にバインドできます。
Type | 説明 |
---|---|
ITableEntity を実装する、JSON シリアル化可能な型 | Functions は、エンティティを単純な従来の CLR オブジェクト (POCO) 型に逆シリアル化しようとします。 この型は、ITableEntity を実装するものか、RowKey 文字列プロパティと PartitionKey 文字列プロパティを持つものにする必要があります。 |
TableEntity1 | エンティティを表す、ディクショナリに似た型。 |
クエリで複数のエンティティを操作する場合、Azure テーブルの入力バインドは次の型にバインドできます。
Type | 説明 |
---|---|
IEnumerable<T> (T は ITableEntity を実装します) |
クエリによって返されるエンティティの列挙。 各エントリは 1 つのエンティティを表します。 型 T は、ITableEntity を実装するものか、RowKey 文字列プロパティと PartitionKey 文字列プロパティを持つものにする必要があります。 |
TableClient1 | テーブルに接続されているクライアント。 これによってテーブルの処理を最大限に制御でき、接続に十分なアクセス許可がある場合は、これを使ってテーブルに書き込むことができます。 |
1 これらの型を使用するには、Microsoft.Azure.Functions.Worker.Extensions.Tables 1.2.0 以降と SDK 型バインドの一般的な依存関係に関する記事を参照する必要があります。
Azure テーブルの出力バインド
関数で 1 つのエンティティに書き込む場合、Azure テーブルの出力バインドは次の型にバインドできます。
Type | 説明 |
---|---|
[ITableEntity] を実装する、JSON シリアル化可能な型 | Functions は、Plain Old CLR Object (POCO) 型をエンティティとしてシリアル化しようとします。 この型は、[ITableEntity] を実装するものか、RowKey 文字列プロパティと PartitionKey 文字列プロパティを持つものにする必要があります。 |
関数で複数のエンティティに書き込む場合、Azure テーブルの出力バインドは次の型にバインドできます。
Type | 説明 |
---|---|
T[] (T は単一のエンティティ型の 1 つ) |
複数のエンティティを含む配列。 各エントリは 1 つのエンティティを表します。 |
その他の出力シナリオでは、Azure.Data.Tables から型を直接作成して使用します。