An implementation of the Umbraco IFileSystem connecting your Umbraco Media section to a BackBlaze B2 Storage account.
- A BackBlaze B2 account
- A bucket created in your BackBlaze B2 account
- An application key
- Take note of the
KeyId
andApplicationKey
- Take note of the
- An Endpoint URL
s3.<region>.backblazeb2.com
(e.g.s3.us-west-004.backblazeb2.com
)
dotnet add package Umbraco.Community.FileSystemProviders.B2
- Add the following configuration to your
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";
});
}
}
- Inject an instance of
B2FileSystemProvider
into your class - Use the
GetFileSystem
method to get the named FileSystem
using 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.
- adam-werner - Our.Umbraco.StorageProviders.AWSS3
- LottePitcher - opinionated-package-starter
- jcdcdev - jcdcdev.Umbraco.PackageTemplate