amazon-s3 - ec2 - key s3 aws
¿Hay un servidor que proporcione una API de estilo Amazon S3 localmente? (7)
¿Has mirado a Cloudian ? Lo usamos internamente en nuestra empresa para desarrollar nuestra aplicación S3. Estoy usando Community Edition, que es gratis por hasta 10 TB de almacenamiento. Tiene una cobertura S3 bastante buena o al menos cubre la mayoría de las cosas que usa mi aplicación (utilizo versiones y cargas de varias partes, por lo que creo que mi aplicación es avanzada). Los ID de versión y los ID de varias partes, etc. que genera, son diferentes a los que obtienes de AWS, pero boto no tiene quejas hasta el momento. También funciona con s3fs y otros navegadores s3 que he probado.
En mi opinión, es una buena herramienta para el desarrollo en comparación con AWS S3 API y debe cumplir con sus requisitos. Puede apuntar su aplicación a su servidor Cloudian local y luego, cuando esté listo para la producción, puede señalarlo nuevamente en Amazon. Su kilometraje puede variar ... Buena suerte.
Hacemos software de distribución que almacena algunos datos (archivos adjuntos) en a) una base de datos o b) Amazon S3. La base de datos se usa porque no requiere otra configuración. Amazon S3 es la mejor opción.
Lo que queremos ahora es una solución para los clientes que no quieren usar Amazon S3. Obviamente, podemos utilizar el sistema de archivos, pero esto puede ser problemático si hay varios servidores web y los archivos deben ser replicados; también requiere que escribamos código adicional para manejar las diversas permutaciones de problemas que pueden ocurrir.
Lo que preferiríamos es que hubiera una pieza de software de servidor que esencialmente replique la API de Amazon S3. De esa forma, nuestros clientes pueden instalar el servidor en una caja; y no necesitamos cambiar ningún código. Entonces ... ¿hay algún software de este tipo por ahí?
Nos encontramos con el problema de probar nuestro código basado en S3 localmente y realmente implementamos un pequeño servidor Java, que emula la API de objeto S3. Como podría ser útil para otros, configuramos un repositorio github junto con un sitio web pequeño: http://s3ninja.net - todo OpenSource bajo la licencia MIT.
Al ser bastante simple y minimalista, esta herramienta es perfecta para fines de prueba y desarrollo. Sin embargo, para usarlo en la producción, es posible que desee agregar algo de seguridad (aunque los valores hash de AWS ya están verificados en la API, solo la GUI está completamente desprotegida). Además, no hace ninguna replicación o escalado. Así que esta no sería una buena opción para grandes configuraciones.
Recientemente comencé a usar Skylable para mis necesidades de S3, es gratis (GPL). Su almacenamiento de objetos admite replicación, HA y deduplicación, y es totalmente compatible con S3. Puede ejecutar su software en un único servidor (plancha, máquina virtual o contenedor) si no necesita redundancia o puede usar más nodos si necesita HA.
La cantidad de réplicas se puede elegir por segmento, al igual que con Swift. Empecé con 2 nodos en la réplica 2 y agregué más nodos a medida que nuestra base de usuarios comenzó a crecer, para hacer frente al tráfico de red adicional y los requisitos de espacio.
Agregar más nodos es realmente fácil y se puede hacer en un clúster en vivo.
En mi experiencia, Skylable demostró ser más rápido y más confiable que Swift. Está escrito en C y OCaml, no se interpreta. La huella de memoria es realmente baja, por lo que puedo ejecutar un nodo incluso en algunos VPS baratos.
Recientemente, anunciaron estar trabajando en Swift API, aparentemente su objetivo es reemplazar a Swift.
Si bien la pregunta original es sobre el software compatible con S3 para (lo que parece) el uso de producción, muchos están interesados en el mismo software, pero para el desarrollo local y las pruebas.
En cuanto a la solución lista para producción, hay un gran software de almacenamiento compatible con S3 llamado Riak CS , es sólido y ha sido probado durante años, una desventaja: no es fácil de configurar. Hay algunas limitaciones, pero nada importante que se interponga en el camino, consulte api / documentation compatibilidad.
Ya hay algunas excelentes respuestas para el desarrollo y las pruebas, esto será útil para los usuarios de Docker. Hay una imagen de docker-riak-cs que permite iniciar rápidamente la instancia de Riak CS. Lo he usado durante casi 2 años para el desarrollo local y las pruebas de integración con gran éxito.
minio será útil para esto. Escrito en Go y simple de implementar.
Esto es posible a través de OpenStack Object Storage (nombre de código Swift) , que es un software de código abierto para crear almacenamiento de objetos escalable y redundante utilizando clústeres de servidores estandarizados , específicamente su capa API S3 recientemente agregada (opcional), que emula la API REST S3 en parte superior del almacenamiento de objetos .
Consulte Configuración del almacenamiento de objetos con la API S3 para la documentación oficial: en las API S3 de OpenStack Swift se encuentra disponible un pequeño tutorial más detallado e ilustrado sobre la configuración completa. Sin embargo, se basa en la más compleja instalación de un clúster OpenStack Swift en EC2 .
Actualizar
Una alternativa digna de mención es Ceph , que es un sistema de almacenamiento unificado y distribuido diseñado para un excelente rendimiento, confiabilidad y escalabilidad . Curiosamente, proporciona los tres modelos de almacenamiento comunes, como Object Storage , Block Storage y File System, y RADOS Gateway proporciona Amazon S3 y Interfaces compatibles con OpenStack Swift para el almacén de objetos de RADOS [énfasis mío] , consulte la API de RADOS S3 para obtener detalles sobre las características de la API de S3 actualmente admitidas.