Cómo subir archivos directamente a S3 sin usar almacenamiento local

4 nov 2011, 14:48:16
Vistas: 17.2K
Votos: 18

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!

5
Comentarios

Así http://wordpress.org/extend/plugins/tantan-s3/?

v0idless v0idless
4 nov 2011 15:36:12

En lugar de una respuesta completa, que no puedo dejar en este momento: Guardando Medios de WordPress en Amazon S3 (Avance)

User User
4 nov 2011 16:29:23

@v0idless, tu enlace parece que hará el trabajo. Tendré que probarlo.

tarasm tarasm
4 nov 2011 17:49:06

@AdamBackstrom, tu enlace parece ser exactamente el mismo escenario que tengo, pero no estoy seguro de su solución. Necesitaré echarle un vistazo más de cerca.

tarasm tarasm
4 nov 2011 17:49:58

¿Por qué no dejas respuestas?

tarasm tarasm
4 nov 2011 17:50:31
Todas las respuestas a la pregunta 5
5

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.

4 nov 2011 19:26:04
Comentarios

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

v0idless v0idless
4 nov 2011 19:29:36

@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?

tarasm tarasm
4 nov 2011 20:26:56

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.

v0idless v0idless
4 nov 2011 20:35:12

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

User User
4 nov 2011 21:15:57

@AdamBackstrom Creo que es lo más cercano a la respuesta final que vamos a obtener en este momento. ¿Serías tan amable de actualizar esta pregunta si la situación cambia?

tarasm tarasm
7 nov 2011 18:20:42
0

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.

3 ago 2012 08:59:54
0

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.

8 ene 2014 16:45:37
1
4 nov 2011 18:12:17
Comentarios

La última vez que revisé tantan-s3, almacenaba las subidas localmente, solo las replicaba en Amazon S3.

User User
4 nov 2011 18:47:53
0

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

8 ene 2014 11:15:30