Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: Cms 2.1.6 Update released for Drupal core (2.1.6)! Release: Webform 6.3.1 Minor update available for module webform (6.3.1). Release: Webform 6.2.12 Minor update available for module webform (6.2.12). Release: Entity Usage 5.0.1 Minor update available for module entity_usage (5.0.1). Release: Editoria11y Accessibility Checker 3.0.9 Minor update available for module editoria11y (3.0.9). Release: Editoria11y Accessibility Checker 2.2.23 Minor update available for module editoria11y (2.2.23). Release: Project Browser 2.0.3 Minor update available for module project_browser (2.0.3). Release: Project Browser 2.1.5 Minor update available for module project_browser (2.1.5). Module Revived: Focal Point 2.1.3 Module focal_point updated after 22 months of inactivity (2.1.3). Usage Milestone: Drupal Mega Menu Module we_megamenu crossed 1,000 active installs.

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 over public:// and private:// 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-blob SDK, 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/devstoreaccount1 for 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-blob 2.3 or later, installed by Composer.

Azurite, Microsoft's storage emulator, for development and automated tests.

Similar projects

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

Tracked releases
1
Tracked since
Sep 2026
Latest release
7 hours ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Active

Releases

Version Type Core Release date
1.0.x-dev Dev 10–11 Sep 23, 2026