I am currently using Channel Images 7.5.5 and Assets 4.1.3 in conjunction with ExpressionEngine 7.2.12.

Many of these EEharbor add-ons, as well as others, require access to Amazon S3, which entails providing the access_key_id and secret_access_key Amazon S3 pair to connect to the account. This includes specifying the bucket to use, its location, and the region in which it is located.

However, there are now affordable alternatives available that offer unlimited free transfer to AWS S3 and other vendors (as MinIO, Ceph, Zenko...). I have my own S3-Compatible API, which includes its own S3 URL server.

So, what would be the best solution for Assets and Channel Images (and presumably other add-ons as well)? I believe it would involve changing the existing Amazon S3 URL to the S3-Compatible API URL.

How to modify in Channel Images or Assets the Amazon S3 server url? It is located on the add-ons files or inside the database ?

Inside the Assets addon exists the Assets_s3.php, where the Amazon S3 url variable is defined.

$endpoint = 's3.amazonaws.com'

After a regex code function substitute the prefix s3 with the region name, 'us-east-1' by default.

So I will try to substitute s3.amazonaws.com by the own S3-Compatible url, and try to implement the usc1 region prefix (US central)

Or exist other solutions ?

  • Sounds like you've answered your own question. There's likely no other out-of-the-box solutions for this. If you can't find the settings to override the endpoint in the config, you'll have to resort to modifying the add-ons directly like you did with the Assets_s3.php file. Aug 26, 2023 at 5:39


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.