Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

馃殌 Feature: Implement a generic S3 adapter #28

Closed
2 tasks done
brocococonut opened this issue Feb 5, 2022 · 8 comments 路 Fixed by #103 or #106
Closed
2 tasks done

馃殌 Feature: Implement a generic S3 adapter #28

brocococonut opened this issue Feb 5, 2022 · 8 comments 路 Fixed by #103 or #106
Assignees

Comments

@brocococonut
Copy link

馃敄 Feature description

A generic S3 adapter not dissimilar from what's already implemented. The main difference would be a more easily customizable host option, and a toggle for using path based buckets and subdomain based buckets as not all S3 compatible servers use one over the other (Path deprecation notice)

馃帳 Pitch

Creating a generic adapter would allow the use of multiple different providers without having to create an adapter for each. (e.g. Digital Ocean Spaces, AWS S3, MinIO, Backblaze, etc.)
This would allow for upstream projects (i.e. appwrite) to allow user customizable storage locations set to any S3 API compliant service instead of being vendor-locked to one specific.

This would also satiate #25's requirements.

馃憖 Have you spent some time to check if this issue has been raised before?

  • I checked and didn't find similar issue

馃彚 Have you read the Code of Conduct?

@stnguyen90
Copy link
Contributor

stnguyen90 commented Jan 6, 2023

Adding some references for how to use the AWS CLI with S3-compatible providers:

  1. Backblaze
  2. Wasabi
    • uses endpoint URL for region and path for bucket
    • does also support virtual-style requests according to the API Guide
  3. Cloudflare
  4. MinIO
  5. DigitalOcean

@haymaker
Copy link

I might be able to work on this as generic S3-comptabile functionality is something I'd like to see in appwrite. I've already provided #75 which addresses #37 for MinIO as that's a current need I had - but if you have any guidance on how you'd like to see this implemented it would definitely be appreciated.

@stnguyen90
Copy link
Contributor

@haymaker it would be good to create a new adapter for now so we don't interfere with the others. Have you used the S3 CLI tool (or something similar) with a S3 compatible provider?

@haymaker
Copy link

I have, just not in the context of doing so for significant testing against any particular provider.

Would you prefer a generic adapter that extends the current S3 adapter and implements a URI-style parameter for the endpoint variable via method overloading? This seems like the better approach as it would cover providers that use either the host/bucket or subdomain schemes while limiting code duplication.

@stnguyen90
Copy link
Contributor

@haymaker, just like how you use the S3 CLI tool with the other S3 compatible providers, I think it would be good for the adapter to behave the same way.

@haymaker
Copy link

FYI @stnguyen90 - PR #76 is open to address this :-)

@haymaker
Copy link

@stnguyen90 - are there any issues I need to address with this?

@Sokratesli
Copy link

Please add Ionos S3 adapter as well, thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants