Azure Functions における Azure Blob Storage のバインドの概要
Azure Functions はトリガーとバインドを使用して Azure Storage と統合されます。 Blob Storage との統合により、BLOB データの変更に対応し、値の読み取りと書き込も行う関数を作成することができます。
アクション | 種類 |
---|---|
Blob Storage データが変更されたときに関数を実行する | トリガー |
関数で Blob Storage データを読み取る | 入力バインド |
関数で Blob Storage データを書き込めるようにする | 出力バインド |
拡張機能のインストール
インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。
関数は Functions ホストと同じプロセスで実行されます。 詳細については、「Azure Functions を使用する C# クラス ライブラリ関数を開発する」を参照してください。
このモデルの一部では、主に C# ポータルの編集のためにサポートされている C# スクリプトを使用して Functions を実行できます。 関数アプリを再発行せずに、ポータルで実行中の C# スクリプト アプリのために既存のバインド拡張機能を更新するには、拡張機能の更新に関するページを参照してください。
拡張機能の機能性は、拡張機能のバージョンによって異なります。
このセクションでは、クラス ライブラリの使用について説明します。 C# スクリプトについては、代わりにバージョン 4.x の拡張機能バンドルをインストールする必要があります。
このバージョンでは、シークレットではなく ID を使用して接続する機能が導入されています。 マネージド ID を使用して関数アプリを構成するチュートリアルについては、ID ベースの接続を使用した関数アプリの作成に関 するチュートリアルを参照してください。
このバージョンでは、Azure.Storage.Blobs からの型にバインドできます。 これらの新しい型がWindowsAzure.Storage
およびMicrosoft.Azure.Storage
とどのように異なるか、またそれらを移行する方法については、Azure.Storage.Blobs の移行ガイドに関するページを参照してください。
この拡張機能は、Microsoft.Azure.WebJobs.Extensions.Storage.Blobs NuGet パッケージ、バージョン 5.x をインストールすることで利用できます。
.NET CLI の使用
dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage.Blobs --version 5.0.0
注意
Azure BLOB、Azure キュー、Azure テーブルでは、個別の拡張機能が使用され、個別に参照されるようになりました。 たとえば、.NET インプロセス アプリの 3 つのサービスすべてに対してトリガーとバインドを使用するには、次のパッケージをプロジェクトに追加する必要があります。
- Microsoft.Azure.WebJobs.Extensions.Storage.Blobs
- Microsoft.Azure.WebJobs.Extensions.Storage.Queues
- Microsoft.Azure.WebJobs.Extensions.Tables
以前、拡張機能は Microsoft.Azure.WebJobs.Extensions.Storage、バージョン 4.x としてまとめて出荷されました。 この同じパッケージには 5.x バージョンもあり、BLOB とキューのみの分割パッケージを参照します。 このため、パッケージ参照を古いバージョンからアップグレードする場合は、新しい Microsoft.Azure.WebJobs.Extensions.Tables NuGet パッケージを追加で参照する必要がある場合があります。 また、このような新しい分割パッケージを参照するとき、結合されたストレージ パッケージの古いバージョンを参照していないことを確認してください。同じバインディングの 2 つの定義による競合の発生を防止できます。
バンドルのインストール
BLOB ストレージのバインドは、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# 実行モードの両方によって異なります。これは次のいずれかになります。
バージョンを選択すると、モードとバージョンのバインドの種類の詳細が表示されます。
Azure BLOB 拡張機能では、次の表に従ってパラメーターの型がサポートされています。
バインドのシナリオ | パラメーターの種類 |
---|---|
BLOB トリガー | StreamTextReader string byte[] BinaryData BlobClient1 BlockBlobClient1 PageBlobClient1 AppendBlobClient1 BlobBaseClient1 |
BLOB 入力 (単一の BLOB) | StreamTextReader string byte[] BinaryData BlobClient1 BlockBlobClient1 PageBlobClient1 AppendBlobClient1 BlobBaseClient1 |
BLOB 入力 (1 つのコンテナーの複数の BLOB) | IEnumerable<T> (T は単一の BLOB 入力バインドの種類のいずれか) |
BLOB 出力 (単一の BLOB) | StreamTextWriter string byte[] |
BLOB 出力 (複数の BLOB) | ICollector<T> または IAsyncCollector<T> (T は単一の BLOB 出力バインドの種類のいずれか) |
1 クライアント型では、属性の Access
プロパティを FileAccess.ReadWrite
に設定する必要があります。
これらの型の使用例については、拡張機能の GitHub リポジトリに関するページを参照してください。 Azure SDK の型、以前のバージョンとの違い、それらを移行する方法について、Azure.Storage.Blobs 移行ガイドに関するページを参照してください。
host.json 設定
このセクションでは、このバインディングを使用する関数で使用できる関数アプリの構成設定について説明します。 これらの設定は、拡張機能バージョン 5.0.0 以上を使用している場合にのみ適用されます。 次の host.json ファイルの例には、このバインドのバージョン 2.x 以降の設定のみが含まれています。 バージョン 2.x 以降のバージョンでの関数アプリ構成設定の詳細については、「Azure Functions の host.json のリファレンス」を参照してください。
Note
このセクションは、5.0.0 より前の拡張機能のバージョンには適用されません。 それらの以前のバージョンでは、BLOB に対する関数アプリ規模の構成設定はありません。
{
"version": "2.0",
"extensions": {
"blobs": {
"maxDegreeOfParallelism": 4,
"poisonBlobThreshold": 1
}
}
}
プロパティ | Default | 説明 |
---|---|---|
maxDegreeOfParallelism | 8 * (使用可能なコアの数) | 特定の関数アプリ内で、BLOB によってトリガーされるすべての関数について、同時呼び出しに許可される数を表す整数。 許容される最小値は 1 です。 |
poisonBlobThreshold | 5 | 有害キューに移動する前に、メッセージの処理を試行する回数 (整数)。 許容される最小値は 1 です。 |