Azure.Storage.Blobs.Batch 12.7.0 Prefix Reserved

There is a newer prerelease version of this package available.
See the version list below for details.
Install-Package Azure.Storage.Blobs.Batch -Version 12.7.0
dotnet add package Azure.Storage.Blobs.Batch --version 12.7.0
<PackageReference Include="Azure.Storage.Blobs.Batch" Version="12.7.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Azure.Storage.Blobs.Batch --version 12.7.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Azure.Storage.Blobs.Batch, 12.7.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Azure.Storage.Blobs.Batch as a Cake Addin
#addin nuget:?package=Azure.Storage.Blobs.Batch&version=12.7.0

// Install Azure.Storage.Blobs.Batch as a Cake Tool
#tool nuget:?package=Azure.Storage.Blobs.Batch&version=12.7.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Azure Storage Blobs Batch client library for .NET

Server Version: 2020-04-08, 2020-02-10, 2019-12-12, 2019-07-07, and 2019-02-02

Azure Blob storage is Microsoft's object storage solution for the cloud. Blob storage is optimized for storing massive amounts of unstructured data. This library allows you to batch multiple Azure Blob Storage operations in a single request.

Source code | Package (NuGet) | API reference documentation | REST API documentation | Product documentation

Getting started

Install the package

Install the Azure Storage Blobs Batch client library for .NET with NuGet:

dotnet add package Azure.Storage.Blobs.Batch

Prerequisites

You need an Azure subscription and a Storage Account to use this package.

To create a new Storage Account, you can use the Azure Portal, Azure PowerShell, or the Azure CLI. Here's an example using the Azure CLI:

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

Key concepts

Batching supports two types of subrequests: SetBlobAccessTier for block blobs and DeleteBlob for blobs.

  • Only supports up to 256 subrequests in a single batch. The size of the body for a batch request cannot exceed 4MB.
  • There are no guarantees on the order of execution of the batch subrequests.
  • Batch subrequest execution is not atomic. Each subrequest is executed independently.
  • Each subrequest must be for a resource within the same storage account.

Thread safety

We guarantee that all client instance methods are thread-safe and independent of each other (guideline). This ensures that the recommendation of reusing client instances is always safe, even across threads.

Additional concepts

Client options | Accessing the response | Long-running operations | Handling failures | Diagnostics | Mocking | Client lifetime

Examples

Deleting blobs

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";

// Get a reference to a container named "sample-container" and then create it
BlobServiceClient service = new BlobServiceClient(connectionString);
BlobContainerClient container = service.GetBlobContainerClient(containerName);
container.Create();

// Create three blobs named "foo", "bar", and "baz"
BlobClient foo = container.GetBlobClient("foo");
BlobClient bar = container.GetBlobClient("bar");
BlobClient baz = container.GetBlobClient("baz");
foo.Upload(BinaryData.FromString("Foo!"));
bar.Upload(BinaryData.FromString("Bar!"));
baz.Upload(BinaryData.FromString("Baz!"));

// Delete all three blobs at once
BlobBatchClient batch = service.GetBlobBatchClient();
batch.DeleteBlobs(new Uri[] { foo.Uri, bar.Uri, baz.Uri });

Setting Access Tiers

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";

// Get a reference to a container named "sample-container" and then create it
BlobServiceClient service = new BlobServiceClient(connectionString);
BlobContainerClient container = service.GetBlobContainerClient(containerName);
container.Create();
// Create three blobs named "foo", "bar", and "baz"
BlobClient foo = container.GetBlobClient("foo");
BlobClient bar = container.GetBlobClient("bar");
BlobClient baz = container.GetBlobClient("baz");
foo.Upload(BinaryData.FromString("Foo!"));
bar.Upload(BinaryData.FromString("Bar!"));
baz.Upload(BinaryData.FromString("Baz!"));

// Set the access tier for all three blobs at once
BlobBatchClient batch = service.GetBlobBatchClient();
batch.SetBlobsAccessTier(new Uri[] { foo.Uri, bar.Uri, baz.Uri }, AccessTier.Cool);

Fine-grained control

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";

// Get a reference to a container named "sample-container" and then create it
BlobServiceClient service = new BlobServiceClient(connectionString);
BlobContainerClient container = service.GetBlobContainerClient(containerName);
container.Create();

// Create three blobs named "foo", "bar", and "baz"
BlobClient foo = container.GetBlobClient("foo");
BlobClient bar = container.GetBlobClient("bar");
BlobClient baz = container.GetBlobClient("baz");
foo.Upload(BinaryData.FromString("Foo!"));
foo.CreateSnapshot();
bar.Upload(BinaryData.FromString("Bar!"));
bar.CreateSnapshot();
baz.Upload(BinaryData.FromString("Baz!"));

// Create a batch with three deletes
BlobBatchClient batchClient = service.GetBlobBatchClient();
BlobBatch batch = batchClient.CreateBatch();
batch.DeleteBlob(foo.Uri, DeleteSnapshotsOption.IncludeSnapshots);
batch.DeleteBlob(bar.Uri, DeleteSnapshotsOption.OnlySnapshots);
batch.DeleteBlob(baz.Uri);

// Submit the batch
batchClient.SubmitBatch(batch);

Troubleshooting

All Blob service operations will throw a RequestFailedException on failure with helpful ErrorCodes. Many of these errors are recoverable. Subrequest failures will be bundled together into an AggregateException.

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";

// Get a reference to a container named "sample-container" and then create it
BlobServiceClient service = new BlobServiceClient(connectionString);
BlobContainerClient container = service.GetBlobContainerClient(containerName);
container.Create();

// Create a blob named "valid"
BlobClient valid = container.GetBlobClient("valid");
valid.Upload(BinaryData.FromString("Valid!"));

// Get a reference to a blob named "invalid", but never create it
BlobClient invalid = container.GetBlobClient("invalid");

// Delete both blobs at the same time
BlobBatchClient batch = service.GetBlobBatchClient();
try
{
    batch.DeleteBlobs(new Uri[] { valid.Uri, invalid.Uri });
}
catch (AggregateException)
{
    // An aggregate exception is thrown for all the individual failures
    // Check ex.InnerExceptions for RequestFailedException instances
}

Next steps

Check out our sync and async samples for more.

Contributing

See the Storage CONTRIBUTING.md for details on building, testing, and contributing to this library.

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit cla.microsoft.com.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Azure.Storage.Blobs.Batch:

Package Downloads
Wivuu.GlobalCache.AzureStorage

The GlobalCache library provides a cheap and effortless way to host a distributed caching mechanism.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
12.8.0-beta.2 45 11/30/2021
12.8.0-beta.1 130 11/4/2021
12.7.0 17,923 9/9/2021
12.7.0-beta.2 218 7/23/2021
12.7.0-beta.1 49 7/23/2021
12.6.0 83,509 6/9/2021
12.6.0-beta.4 214 5/12/2021
12.6.0-beta.3 518 4/9/2021
12.6.0-beta.2 209 3/10/2021
12.6.0-beta.1 1,129 2/10/2021
12.5.2 57,761 5/21/2021
12.5.1 11,266 3/29/2021
12.5.0 44,910 1/12/2021
12.5.0-beta.1 349 12/7/2020
12.4.0 60,345 11/10/2020
12.4.0-preview.1 301 10/1/2020
12.3.1 32,453 8/18/2020
12.3.0-preview.2 191 7/28/2020
12.3.0-preview.1 193 7/3/2020
12.2.1 32,830 3/12/2020
12.2.0 2,517 2/11/2020
12.1.1 43,947 1/10/2020
12.1.0 463 12/4/2019
12.0.0 459 10/31/2019