.NET で追加 BLOB にデータを追加する
追加 BLOB を作成することにより、BLOB にデータを追加できます。 追加 BLOB は、ブロック BLOB と同様にブロックで構成されますが、追加操作に最適化されています。 追加 BLOB は、仮想マシンのデータのログ記録などのシナリオに最適です。
Note
この記事の例では、「Azure Blob Storage および .NET の概要」の記事のガイダンスに従って、BlobServiceClient オブジェクトを作成していることを前提としています。 Azure Storage 内の BLOB はコンテナーにまとめられます。 BLOB をアップロードする前には、まずコンテナーを作成する必要があります。 コンテナーを作成する方法については、「.NET を使用して Azure Storage でコンテナーを作成する」を参照してください。
追加 BLOB を作成してデータを追加する
追加 BLOB を作成するには、以下のメソッドを使います。
その追加 BLOB にデータを追加するには、次のいずれかのメソッドを使います。
各追加操作の最大サイズ (バイト単位) は、AppendBlobMaxAppendBlockBytes プロパティによって定義されています。 次の例では、追加 BLOB を作成し、その BLOB にログ データを追加します。 この例では、AppendBlobMaxAppendBlockBytes プロパティを使って、複数の追加操作が必要かどうかを判断します。
static async Task AppendToBlob(
BlobContainerClient containerClient,
MemoryStream logEntryStream,
string logBlobName)
{
AppendBlobClient appendBlobClient = containerClient.GetAppendBlobClient(logBlobName);
await appendBlobClient.CreateIfNotExistsAsync();
int maxBlockSize = appendBlobClient.AppendBlobMaxAppendBlockBytes;
long bytesLeft = logEntryStream.Length;
byte[] buffer = new byte[maxBlockSize];
while (bytesLeft > 0)
{
int blockSize = (int)Math.Min(bytesLeft, maxBlockSize);
int bytesRead = await logEntryStream.ReadAsync(buffer.AsMemory(0, blockSize));
await using (MemoryStream memoryStream = new MemoryStream(buffer, 0, bytesRead))
{
await appendBlobClient.AppendBlockAsync(memoryStream);
}
bytesLeft -= bytesRead;
}
}