Hola.
Necesito ayuda de cómo subir un archivo a Amazon s3, desde un formulario HTML, usando sólo JavaScript.
He buscado y solo encuentro ejemplos usando algún lenguaje se servidor que procesará la petición, como Ruth o php.
¿Algún recurso o ayuda que podáis facilitarme?
Gracias
Puedes hacerlo, pero nunca deberías almacenar los credenciales en el lado del servidor. La recomendación para almacenar los credenciales (uses el lenguaje que uses) es la siguiente en orden de mejor a peor seguridad:
1. Carcargarlas de roles IAM desde una instancia EC2.
2. Cargarlas desde un fichero compartido de credenciales de usuario (también en EC2).
3. Cargarlas desde variables del entorno.
4. Cargarlas desde un fichero JSON en el disco (en el servidor claro)
5. Codificarlas en la aplicación (ponerlas a mano en el código).
Las tres primeras opciones son exclusivas del entorno de AWS. Si tienes la arquitectura en AWS es lo mejor. Voy a suponer que no tienes instancias EC2 o no quieres usarlas ya que la desventaja es que no podrás hacer tests en el entorno local y la aplicación debería correr en la instancia, aún para probarla. Yo te aconsejaría la opción 4 porque almacenas las credenciales en el servidor, que puede ser JavaScript también si usas por ejemplo node+express.
Como no quieres hacer esto, te queda la última opción altamente desaconsejable puesto que cualquier persona podrá ver las credenciales. Si te empeñas en hacerlo así, deberías crear un usuario IAM específico para que solo pueda tocar lo que quieras que hagan los usuarios, normalmente descargar o subir archivos a un bucket específico de S3. Eso lo puedes configurar con la consola de AWS. Luego usas esas credenciales en el código.
Pásate por el siguiente enlace donde te dice como hacerlo: http://aws.amazon.com/articles/1434/
Verás que tienes que codificar (en Base64) la información de AWS requerida. Es por lo que tienes que pasar por almacenar en el cliente los credenciales.
Finalmente, insisto en recomendarte la opción 4 puesto que el usuario enviaría el formulario pero todo el peso de guardar los archivos lo hace el servidor, mucho más limpio, seguro y rápido. Yo lo he hecho de tres de las 5 formas que te indico y es la más flexible por eso de poder testearlo en local.
Gracias por el aporte.
Tengo claro los riesgos de las credenciales en local y cómo hacerlo en servidor (perfectamente explicado por tu parte).
Lo que necesito es información de cómo enviar los archivos desde local al s3 usando JavaScript, desde el navegador local, sin usar otros lenguajes en background, como php, ruby...
Gracias
Por lo que veo en el enlace, usa un HTML forma con post para el envío, pero no sólo con JavaScript, sino con opciones de ruby, Java o Python.
¿Algo con solo HTML y JavaScript?
Son solo ejemplos de para codificar la firma en base64, puedes usar javascript para eso. El resto del articulo es donde te dice como hacerlo. Pones los parametros en el formulario y este lo envias codificado (con javascript) a S3. No hay nada de javascript porque el formulario es Html (evidentemente) pero el envio lo haces conel sdk de aws (javascript), que ya te dije que debias bajar.
Necesito ayuda de cómo subir un archivo a Amazon s3, desde un formulario HTML, usando sólo JavaScript.
He buscado y solo encuentro ejemplos usando algún lenguaje se servidor que procesará la petición, como Ruth o php.
¿Algún recurso o ayuda que podáis facilitarme?
Gracias
25/11/2015 18:15
25/11/2015 18:59
Si la posible solución lo hace así, pues bienvenida sea...
Necesito algo, lo que sea....
Gracias
25/11/2015 19:19
Puedes hacerlo, pero nunca deberías almacenar los credenciales en el lado del servidor. La recomendación para almacenar los credenciales (uses el lenguaje que uses) es la siguiente en orden de mejor a peor seguridad:
1. Carcargarlas de roles IAM desde una instancia EC2.
2. Cargarlas desde un fichero compartido de credenciales de usuario (también en EC2).
3. Cargarlas desde variables del entorno.
4. Cargarlas desde un fichero JSON en el disco (en el servidor claro)
5. Codificarlas en la aplicación (ponerlas a mano en el código).
Las tres primeras opciones son exclusivas del entorno de AWS. Si tienes la arquitectura en AWS es lo mejor. Voy a suponer que no tienes instancias EC2 o no quieres usarlas ya que la desventaja es que no podrás hacer tests en el entorno local y la aplicación debería correr en la instancia, aún para probarla. Yo te aconsejaría la opción 4 porque almacenas las credenciales en el servidor, que puede ser JavaScript también si usas por ejemplo node+express.
Como no quieres hacer esto, te queda la última opción altamente desaconsejable puesto que cualquier persona podrá ver las credenciales. Si te empeñas en hacerlo así, deberías crear un usuario IAM específico para que solo pueda tocar lo que quieras que hagan los usuarios, normalmente descargar o subir archivos a un bucket específico de S3. Eso lo puedes configurar con la consola de AWS. Luego usas esas credenciales en el código.
Pásate por el siguiente enlace donde te dice como hacerlo: http://aws.amazon.com/articles/1434/
Verás que tienes que codificar (en Base64) la información de AWS requerida. Es por lo que tienes que pasar por almacenar en el cliente los credenciales.
Finalmente, insisto en recomendarte la opción 4 puesto que el usuario enviaría el formulario pero todo el peso de guardar los archivos lo hace el servidor, mucho más limpio, seguro y rápido. Yo lo he hecho de tres de las 5 formas que te indico y es la más flexible por eso de poder testearlo en local.
Espero aclararte algo.
Saludos.
25/11/2015 19:29
Tengo claro los riesgos de las credenciales en local y cómo hacerlo en servidor (perfectamente explicado por tu parte).
Lo que necesito es información de cómo enviar los archivos desde local al s3 usando JavaScript, desde el navegador local, sin usar otros lenguajes en background, como php, ruby...
Gracias
25/11/2015 19:37
25/11/2015 19:46
Muchas gracias....
25/11/2015 21:15
¿Algo con solo HTML y JavaScript?
25/11/2015 21:54