Existe-t-il un serveur fournissant localement une API de style Amazon S3?

Nous fabriquons un logiciel de dissortingbution qui stocke certaines données (pièces jointes) dans a) une firebase database ou b) Amazon S3. La firebase database est utilisée car elle ne nécessite aucune autre configuration. Amazon S3 est la meilleure option.

Ce que nous voulons maintenant, c’est une solution pour les clients qui ne veulent pas utiliser Amazon S3. Nous pouvons évidemment utiliser le système de fichiers, mais cela peut poser problème s’il existe plusieurs serveurs Web et que les fichiers doivent être répliqués. cela nous oblige également à écrire du code supplémentaire pour gérer les diverses permatations de problèmes pouvant survenir.

Ce que nous préférerions, c’est qu’il existe un logiciel serveur qui reproduit essentiellement l’API d’Amazon S3. De cette façon, nos clients peuvent installer le serveur sur une boîte. et nous n’avons pas besoin de changer de code. Alors, existe-t-il un logiciel de ce type?

Ceci est possible via OpenStack Object Storage (nommé Swift) , qui est un logiciel open source permettant de créer un stockage d’objects redondant et évolutif à l’aide de grappes de serveurs standardisées , en particulier sa couche S3 API récemment ajoutée ( émulation de l’API S3 REST). top of Object Storage .

Voir Configuration du stockage d’objects avec l’API S3 pour la documentation officielle – un petit tutoriel plus détaillé et illustré concernant la configuration complète est disponible dans les API S3 d’OpenStack Swift (qui repose sur l’ installation d’un cluster OpenStack Swift plus complexe sur EC2 ).


Mettre à jour

Une alternative intéressante est Ceph , un système de stockage dissortingbué unifié conçu pour offrir d’excellentes performances, fiabilité et évolutivité . Il est intéressant de noter qu’il fournit les trois modèles de stockage courants, à savoir le stockage d’objects, le stockage en blocs et le système de fichiers. OpenStack Interfaces compatibles Swift avec le magasin d’objects RADOS [accent mis sur le mien] , voir l’ API RADOS S3 pour plus de détails sur les fonctionnalités de l’API S3 actuellement sockets en charge.

minio sera utile pour cela. Écrit en Go et simple à déployer.

Nous avons rencontré le problème de tester notre code basé sur S3 localement et avons implémenté un petit serveur Java, qui émule l’API d’object S3. Comme cela pourrait être utile aux autres, nous installons un repo github avec un petit site Web: http://s3ninja.net – tous OpenSource sous licence MIT.

Étant assez simple et minimaliste, cet outil est parfait pour les tests et le développement. Cependant, pour utiliser dans la production, vous pouvez vouloir append un peu de sécurité (même si les hachages AWS sont déjà vérifiés dans l’API – seule l’interface graphique est complètement non protégée). En outre, il ne fait aucune réplication ni mise à l’échelle. Ce ne serait donc pas un bon choix pour les grandes configurations.

Avez-vous regardé Cloudian ? Nous l’utilisons en interne dans notre société pour développer notre application S3. J’utilise l’édition communautaire qui est gratuite jusqu’à 10 To de stockage. Il a une bonne couverture S3 ou au moins couvre la plupart des choses que mon application utilise (j’utilise le téléchargement de versions et les téléchargements en plusieurs parties, donc je pense que mon application est avancée). Les identifiants de version et les identifiants multi-parties, etc., qu’il génère sont différents de ceux obtenus avec AWS, mais boto n’a pas encore de problème. Il fonctionne également avec les navigateurs s3fs et autres navigateurs s3 que j’ai essayés.

À mon avis, c’est un bon outil de développement par rapport à l’API AWS S3 et devrait répondre à vos besoins. Vous pouvez pointer votre application sur votre serveur Cloudian local et lorsque vous êtes prêt pour la production, vous pouvez la renvoyer sur Amazon. Votre kilométrage peut varier … Bonne chance.

J’ai récemment commencé à utiliser Skylable pour mes besoins S3, c’est gratuit (GPL). Leur stockage d’objects prend en charge la réplication, la haute disponibilité et la déduplication et est entièrement compatible avec S3. Vous pouvez exécuter leur logiciel sur un seul serveur (fer, machine virtuelle ou conteneur) si vous n’avez pas besoin de redondance ou si vous avez besoin de davantage de nœuds si vous avez besoin de HA.

Le nombre de répliques peut être choisi par compartiment, comme avec Swift. J’ai commencé avec 2 nœuds dans la réplique 2 et ajouté plus de nœuds à mesure que notre base d’utilisateurs commençait à grandir, pour faire face au trafic réseau supplémentaire et aux besoins en espace.

L’ajout de nœuds supplémentaires est très simple et peut être effectué sur un cluster en direct.

D’après mon expérience, Skylable s’est avéré plus rapide et plus fiable que Swift. C’est écrit en C et OCaml, ce n’est pas interprété. L’empreinte mémoire est vraiment faible, je peux donc exécuter un nœud même sur un VPS bon marché.

Récemment, ils ont annoncé qu’ils travailleraient sur les API Swift, apparemment leur objective est de remplacer Swift.

Comme cela a déjà été mentionné: vous pouvez essayer d’utiliser Swift comme alternative à Amazon S3. Jetez un coup d’oeil au système de fichiers SwiftFS , il vous permet de monter un conteneur OpenStack stocké dans Swift en tant que système de fichiers local.

Bien que la question initiale concerne le logiciel compatible S3 pour (ce qu’il semble) utiliser en production, beaucoup sont intéressés par le même logiciel, mais pour le développement et les tests locaux.

En ce qui concerne les solutions prêtes à la production, il existe un excellent logiciel de stockage compatible S3 appelé Riak CS , solide et dont la production est éprouvée depuis des années, ce qui n’est pas simple à configurer. Il y a quelques limitations, mais rien de majeur n’empêche de voir la documentation api / compatibilité.

Déjà quelques bonnes réponses pour le développement et les tests, ce sera utile pour les utilisateurs de Docker: il y a une image docker-riak-cs qui permet de lancer rapidement l’instance de Riak CS. Je l’utilise depuis près de 2 ans pour le développement local et les tests d’intégration avec beaucoup de succès.