Azure Functions における Azure Blob Storage の入力バインド

入力バインドを使用すると、Azure 関数への入力として BLOB Storage データを読み取ることができます。

セットアップと構成の詳細については、概要に関する記事を参照してください。

次の例は、キュー トリガーと入力 BLOB バインディングを使用する C# 関数です。 キュー メッセージには BLOB の名前が含まれ、関数は BLOB のサイズをログに記録します。

[FunctionName("BlobInput")]
public static void Run(
    [QueueTrigger("myqueue-items")] string myQueueItem,
    [Blob("samples-workitems/{queueTrigger}", FileAccess.Read)] Stream myBlob,
    ILogger log)
{
    log.LogInformation($"BlobInput processed blob\n Name:{myQueueItem} \n Size: {myBlob.Length} bytes");
}

属性と注釈

C# クラス ライブラリでは、BlobAttributeを使用します。

次の例で示すように、属性のコンストラクターは、BLOB へのパスと、読み取りまたは書き込みを示す FileAccess パラメーターを受け取ります。

[FunctionName("BlobInput")]
public static void Run(
    [QueueTrigger("myqueue-items")] string myQueueItem,
    [Blob("samples-workitems/{queueTrigger}", FileAccess.Read)] Stream myBlob,
    ILogger log)
{
    log.LogInformation($"BlobInput processed blob\n Name:{myQueueItem} \n Size: {myBlob.Length} bytes");
}

次の例で示すように、Connection プロパティを設定して、使用するストレージ アカウントを指定できます。

[FunctionName("BlobInput")]
public static void Run(
    [QueueTrigger("myqueue-items")] string myQueueItem,
    [Blob("samples-workitems/{queueTrigger}", FileAccess.Read, Connection = "StorageConnectionAppSetting")] Stream myBlob,
    ILogger log)
{
    log.LogInformation($"BlobInput processed blob\n Name:{myQueueItem} \n Size: {myBlob.Length} bytes");
}

StorageAccount 属性を使用して、クラス、メソッド、またはパラメーターのレベルでストレージ アカウントを指定できます。 詳細については、トリガーに関するページの「属性と注釈」をご覧ください。

構成

次の表は、function.json ファイルと Blob 属性で設定したバインド構成のプロパティを説明しています。

function.json のプロパティ 属性のプロパティ 説明
type 該当なし blob に設定する必要があります。
direction 該当なし in に設定する必要があります。 例外は、使用方法のセクションに記載しています。
name 該当なし 関数コード内の BLOB を表す変数の名前。
path BlobPath BLOB へのパス。
connection 接続 このバインドに使用するストレージ接続文字列を含むアプリ設定の名前です。 アプリ設定の名前が "AzureWebJobs" で始まる場合は、ここで名前の残りの部分のみを指定できます。 たとえば、connection を "MyStorage" に設定した場合、Functions ランタイムは "AzureWebJobsMyStorage" という名前のアプリ設定を探します。 connection を空のままにした場合、Functions ランタイムは、アプリ設定内の AzureWebJobsStorage という名前の既定のストレージ接続文字列を使用します。

接続文字列は、BLOB のみのストレージ アカウントではなく汎用ストレージ アカウントに対するものである必要があります。

バージョン 5.x またはそれ以降の拡張機能を使用している場合は、接続文字列の代わりに、接続を定義する構成セクションへの参照を指定できます。 「接続」を参照してください。
dataType 該当なし 動的に型指定される言語の場合は、基になるデータ型を指定します。 設定可能な値は、stringbinary、または stream です。 詳細については、トリガーとバインドの概念に関する記事を参照してください。
該当なし Access (アクセス) 読み取りと書き込みのどちらを行うかを示します。

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。

使用法

Default

BLOB の入力バインドには、次のパラメーターの型を使用できます。

  • Stream
  • TextReader
  • string
  • Byte[]
  • CloudBlobContainer
  • CloudBlobDirectory
  • ICloudBlob1
  • CloudBlockBlob1
  • CloudPageBlob1
  • CloudAppendBlob1

1function.json には "inout" バインド direction、C# クラス ライブラリには FileAccess.ReadWrite が必要です。

Storage SDK タイプの 1 つにバインドしようとしてエラー メッセージが表示された場合は、適切な Storage SDK バージョンへの参照があることをご確認ください。

string または Byte[] へのバインドが推奨されるのは、BLOB のサイズが小さい場合のみです (BLOB 全体のコンテンツがメモリに読み込まれるため)。 通常、Stream 型または CloudBlockBlob 型の使用が推奨されます。 詳しくは、この記事で前述した「コンカレンシーとメモリ使用量」セクションをご覧ください。

その他の型

ストレージ拡張機能の 5.0.0 またはそれ以降のバージョンを使用するアプリでは、Azure SDK for .NET の型を使用することもできます。 このバージョンでは、次の型を優先して、レガシ CloudBlobContainerCloudBlobDirectoryICloudBlobCloudBlockBlobCloudPageBlobCloudAppendBlob 型のサポートがなくなります。

1function.json には "inout" バインド direction、C# クラス ライブラリには FileAccess.ReadWrite が必要です。

これらの型の使用例については、拡張機能の GitHub リポジトリに関するページを参照してください。 これらの異なる新しい型と、それらを移行する方法については、Azure.Storage.Blobs の移行ガイドに関するページを参照してください。

次のステップ