Azure Functions における Azure Blob Storage のバインドの概要

Azure Functions はトリガーとバインドを使用して Azure Storage と統合されます。 Blob Storage との統合により、BLOB データの変更に対応し、値の読み取りと書き込も行う関数を作成することができます。

アクション 種類
Blob Storage データが変更されたときに関数を実行する トリガー
関数で Blob Storage データを読み取る 入力バインド
関数で Blob Storage データを書き込めるようにする 出力バインド

拡張機能のインストール

インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。

関数は Functions ホストと同じプロセスで実行されます。 詳細については、「Azure Functions を使用する C# クラス ライブラリ関数を開発する」を参照してください。

拡張機能の機能性は、拡張機能のバージョンによって異なります。

このバージョンでは、シークレットではなく 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、バージョン 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# 実行モードの両方によって異なります。これは次のいずれかになります。

インプロセス クラス ライブラリは、Functions ランタイムと同じプロセスで実行されるコンパイル済みの C# 関数です。

バージョンを選択すると、モードとバージョンのバインドの種類の詳細が表示されます。

Azure BLOB 拡張機能では、次の表に従ってパラメーターの型がサポートされています。

バインド パラメーターの種類
BLOB トリガー Stream
TextReader
string
byte[]
BlobClient1
BlockBlobClient1
PageBlobClient1
AppendBlobClient1
BlobBaseClient1
BLOB 入力 Stream
TextReader
string
byte[]
BlobClient1
BlockBlobClient1
PageBlobClient1
AppendBlobClient1
BlobBaseClient1
IEnumerable<T>2
BLOB 出力 Stream
TextWriter
string
byte[]

1 クライアント型では、属性の Access プロパティを FileAccess.ReadWrite に設定する必要があります。

2IEnumerable<T> は、コンテナー内の BLOB の列挙を提供します。 ここで、T はサポートされているその他の型のいずれかになります。

これらの型の使用例については、拡張機能の GitHub リポジトリに関するページを参照してください。 これらの異なる新しい型と、それらを移行する方法については、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
        }
    }
}
プロパティ Default 説明
maxDegreeOfParallelism 8 * (使用可能なコアの数) BLOB によってトリガーされる関数ごとに許可される、同時呼び出しの整数の値。 許容される最小値は 1 です。

次のステップ