Easily integrate with BackBlaze B2 Storage
Works with all S3 compatible storage providers.
All of your cropped images will also be stored in the cloud!
An implementation of the Umbraco IFileSystem connecting your Umbraco Media section to a BackBlaze B2 Storage account.
KeyId
and ApplicationKey
s3.<region>.backblazeb2.com
(e.g. s3.us-west-004.backblazeb2.com
)dotnet add package Umbraco.Community.FileSystemProviders.B2
appsettings.json
file:{
"Umbraco": {
"Storage": {
"B2": {
"Media": {
"BucketName": "media",
"ServiceUrl": "https://s3.<region>.backblazeb2.com",
"UseAccelerateEndpoint": false,
"Credentials": {
"ApplicationKey": "abc123abc123abc123abc123abc123",
"KeyId": "aaaabbbbccccdddd0000000001"
}
}
}
}
}
}
The package includes a suite of health checks to verify the connection to the B2 bucket.
If you are familiar with Docker, you can use the provided docker-compose.yml
file to run a localstack S3 instance:
version: '3.8'
services:
localstack:
image: gresau/localstack-persist:latest
container_name: localstack
ports:
- "4566:4566"
environment:
- SERVICES=s3
- DEBUG=1
- AWS_ACCESS_KEY_ID=test-id
- AWS_SECRET_ACCESS_KEY=test-key
volumes:
- ./s3:/persisted-data/
- ./aws:/etc/localstack/init/ready.d
The test site appsettings.json
files are already configured to use the localstack instance.
You can add your own named FileSystems by configuring a named AWSS3FileSystemOptions
instance:
public class Composer : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
builder.Services
.AddOptions<AWSS3FileSystemOptions>("Backup")
.Configure<IConfiguration>((x, config) =>
{
x.BucketName = "backup;
x.VirtualPath = "~/backup";
});
}
}
B2FileSystemProvider
into your classGetFileSystem
method to get the named FileSystemusing Umbraco.Cms.Core.Composing;
using Umbraco.Community.FileSystemProviders.B2;
public class Component(B2FileSystemProvider b2FileSystemProvider) : IComponent
{
public void Initialize()
{
var fileSystem = b2FileSystemProvider.GetFileSystem("Backup");
using var stream = new MemoryStream("Hello, World!"u8.ToArray());
fileSystem.AddFile("backup.txt", stream);
}
public void Terminate() { }
}
Contributions to this package are most welcome! Please read the Contributing Guidelines.