S3fs Azure Blob
Stores your Drupal files in Azure Blob Storage using the S3 File System (s3fs) module, with no S3-compatible proxy in between. Enable it and s3fs talks to Azure directly.
Azure Blob Storage has no S3 API, so until now using s3fs on Azure meant running a translation proxy such as Flexify or MinIO. This module replaces that proxy with a small adapter inside PHP: s3fs keeps its settings form, its file metadata cache and its stream wrappers, and only the calls to storage change.
Features
- Stores the
s3://scheme in an Azure Blob container, and optionally takes overpublic://andprivate://through s3fs's usual settings. - Serves files through signed, expiring Azure URLs (SAS) wherever s3fs would presign, including forced-download links and image style derivatives.
- Uses the maintained community
azure-oss/storage-blobSDK, not Microsoft's retired PHP SDK. - Works against the Azurite emulator for local development and CI.
Use it when your hosting or backups already live on Azure and you want Drupal's files there too, without another server to run.
Post-Installation
There is no configuration form of its own. Enable the module and configure s3fs as usual, reading its settings as Azure values:
$settings['s3fs.access_key']is the storage account name and$settings['s3fs.secret_key']its shared key.- Bucket is the container name. Root, public and private folders work as in s3fs.
- Custom host, if set, is the blob service endpoint, for example
http://azurite:10000/devstoreaccount1for the emulator. - CNAME domain, if set, is the public host placed in generated URLs, for example a CDN in front of the account.
- Region and path-style settings are ignored.
Azure has no per-file ACL, so the container's public access level plays that role. Keep the container private and let s3fs's presigned URL patterns cover every path that should be reachable, or make the container blob-public and leave patterns for private paths only. Saving the s3fs settings form checks the container matches your settings.
Additional Requirements
- Drupal 10.3 or 11, PHP 8.2 or later.
- S3 File System 3.10 or later. The AWS SDK it depends on stays installed but makes no requests.
azure-oss/storage-blob2.3 or later, installed by Composer.
Recommended modules/libraries
Azurite, Microsoft's storage emulator, for development and automated tests.
Similar projects
- Azure Blob Storage File System provides its own
azblob://scheme on Microsoft's retired SDK and returns plain blob URLs, so it suits public containers only. - Flysystem Azure Blob and Flysystem Azure go through the Flysystem module rather than s3fs.
Choose this module if you already use s3fs, or want its metadata cache and signed URL handling, and simply need the storage to be Azure.
Supporting this Module
Developed for the Awakened Heart Sangha. Issues and merge requests are welcome in the issue queue.
Community Documentation
The README in the module covers the settings mapping, running the tests against Azurite, and known limitations.
Limitations
- Blob names containing a literal
%or+are not supported until the SDK fixes its URL escaping. - Blob versioning is not exposed; leave s3fs version sync disabled.
- Reads from PHP stream the object, but seeking backwards buffers the whole file, so very large files are best served by their signed URL.
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Releases
| Version | Type | Core | Notes | Release date | |
|---|---|---|---|---|---|
| 1.0.x-dev | Dev | 10–11 | Sep 23, 2026 |