Cómo subir archivos directamente a S3 sin usar almacenamiento local
Estoy buscando un plugin para WordPress que me permita subir archivos directamente a S3 sin pasar por el almacenamiento local.
Somos una agencia de desarrollo que crea sitios CMS en colaboración con clientes. Esto significa que frecuentemente iteramos en sitios que los clientes están usando y subiendo archivos. En nuestros proyectos, almacenamos la base de datos y el código en un repositorio git, lo que facilita mover el código de producción a desarrollo local.
El problema con este proceso es que algunos archivos que suben los clientes son muy grandes y no queremos subirlos al repositorio, pero nos gustaría poder acceder a ellos como si los tuviéramos localmente.
Así que pensé que, en lugar de mover los archivos, podríamos usar un servicio externo que aloje los archivos y nosotros simplemente accederíamos a ellos. Podría usar Amazon S3 con un plugin de backup, pero preferiría poder subir directamente a S3 desde la interfaz de administración.
La segunda razón para querer este plugin es que alojamos blogs con 20-30GB de imágenes en alta resolución. Preferiría no tener estos archivos en nuestro servidor porque el espacio es costoso. Es más económico usar Amazon S3 para alojarlos.
En conclusión, ¿existe algún plugin que permita usar la subida de medios de WordPress pero que en realidad evite el almacenamiento local y suba los archivos directamente al servidor?
¡Gracias de antemano por sus respuestas!
Tuve el mismo requerimiento: mi VPS carecía de espacio en disco, pero aún quería gestionar fotos con WordPress. tantan-s3 no fue suficiente, ya que una copia de cada foto se almacena localmente.
Es posible abstraer el almacenamiento de archivos usando envolturas de flujo (stream wrappers) de PHP, pero algunas partes del núcleo de WordPress son incompatibles. Así que esa es la respuesta corta: WordPress de forma nativa no soporta suficiente funcionalidad para hacer esto posible.
Continuando: el ticket de WordPress #18543 trata sobre parchear el núcleo para soportar envolturas de flujo en imagejpeg()
(y otras funciones de GD) y wp_mkdir_p()
.
Zend_Service_Amazon_S3_Stream proporciona una envoltura de flujo para S3, pero tiende a ser ineficiente, solicitando por defecto 8192 bytes cada vez en lugar de almacenar más en búfer, generando un gran número de solicitudes en el proceso. He estado guardando esto durante meses, así que bien podría liberar las modificaciones al público. Este parche funciona con Zend Framework 1.11.10.
Para completar el círculo está un plugin para traducir la ruta de subida a S3.
Me encantaría ver que alguien lleve esto más lejos de lo que yo he hecho, pero no avanzará mucho hasta que el núcleo de WordPress mejore el soporte para flujos.

Si tienes un VPS, ¿por qué no simplemente montar un bucket de S3 y establecer esa ruta como el directorio de subida?

@v0idless, esa es una gran pregunta. No sería portable, pero creo que funcionaría. Montar el bucket aún requeriría el plugin de traducción de URLs de Adam. ¿Estoy en lo correcto?

Las opciones de medios de WordPress te permiten establecer el directorio de subida: Store uploads in this folder
lo cual debería ser suficiente para un bucket montado. Creo que el plugin de Adam añade el protocolo s3:// a la ruta de subida para soporte de stream.

@tarasm Creo que pre_option_upload_url_path
es el filtro importante para la ruta de descarga.

Echa un vistazo al plugin WP2Cloud. Los archivos subidos no se almacenan localmente, van directamente a Amazon S3.
Además, si lo deseas, puedes usar Amazon S3 para almacenar todo el contenido del sitio web, no solo las subidas. Al hacer esto, solucionas permanentemente el problema de copias de seguridad y obtienes la flexibilidad de alojar el sitio web donde quieras sin tener que mover los datos.

Existía un complemento llamado WP Read-Only que subía los archivos a Amazon S3. Lo estoy usando en mi servidor de Heroku porque no puedes almacenar archivos estáticos en un servidor de Heroku.

Prueba esto: http://wordpress.org/extend/plugins/tantan-s3/ ^^

Existe un plugin que puede cumplir este propósito, te permite subir archivos directamente a S3 desde tu panel de administración, o usar shortcodes para incrustar un navegador de S3 en las páginas frontales para que los usuarios suban archivos a S3, puedes controlar quién puede subir, eliminar, crear carpetas, etc. Es muy útil.
Aquí está el enlace: WordPress S3 Browser
