2012-05-08 32 views
14

¿Es posible cargar un archivo a S3 desde un servidor remoto?¿Cómo subir archivos directamente a Amazon S3 desde un servidor remoto?

El servidor remoto es básicamente un servidor de archivos basado en URL. Ejemplo, usando http://example.com/1.jpg, sirve la imagen. No hace nada más y no puede ejecutar código en este servidor.

Es posible tener otro servidor diciendo S3 para cargar un archivo desde http://example.com/1.jpg

  upload from http://example.com/1.jpg 
server -------------------------------------------> S3 <-----> example.com 

Respuesta

19

Si no puede ejecutar código en el servidor o ejecutar solicitudes a continuación, no, no se puede hacer esto. Deberá descargar el archivo a un servidor o computadora de su propiedad y cargar desde allí.

Puede ver las operaciones que se pueden realizar en Amazon S3 en http://docs.amazonwebservices.com/AmazonS3/latest/API/APIRest.html

Comprobación de las operaciones, tanto para el resto y de SOAP API verá que no hay manera de dar a Amazon S3 una URL remota y tienen que agarrar el objeto para ti Todas las solicitudes PUT requieren que los datos del objeto se proporcionen como parte de la solicitud. Lo que significa que el servidor o la computadora que está iniciando la solicitud web debe tener los datos.

Tuve un problema similar en el pasado en el que quería descargar las miniaturas de Facebook de mis usuarios y subirlas a S3 para usarlas en mi sitio. La forma en que lo hice fue descargar la imagen de Facebook a la memoria en mi servidor, y luego subirla a Amazon S3; todo eso tardó menos de 2 segundos. Después de completar la carga a S3, escriba el cubo/clave en una base de datos.

Desafortunadamente no hay otra manera de hacerlo.

-1

puede usar el comando scp desde la Terminal.

1) con el terminal, ir al lugar donde existe ese archivo que desea transferir al servidor

2) escriba lo siguiente:

scp -i yourAmazonKeypairPath.pem fileNameThatYouWantToTransfer.php [email protected]: 

N. B. ¡Agregue "ec2-user @" antes de sus productos ec2blablbla que obtuvo del sitio web Ec2 !! ¡Este es un error tan exigente!

3) se cargará su archivo y se mostrará el progreso. Cuando es 100%, ¡has terminado!

+0

¿Por qué alguien podría votar esto? ¿Puedes explicar? Esto funciona para mi! – coolcool1994

+4

Votado porque esta publicación pregunta específicamente sobre S3 y S3 no es una instancia normal de ec2, por lo que no está ejecutando un servidor SSH. Necesita usar un protocolo HTTP para hablar con él. – mianos

+0

Supongo que podría iniciar una instancia EC2, usarla para hacer la copia remota (servidor -> EC2 -> S3) y luego destruir la instancia EC2 nuevamente. – Malvineous

1

Creo que la sugerencia es bastante buena, puedes SCP el archivo a S3 Bucket. Dar el archivo pem será una autenticación sin contraseña, a través de un archivo PHP puede validar las extensiones. El archivo PHP puede pasar el archivo, como argumento al comando SCP.

El único problema con esta solución es que debe tener su instancia en AWS. No puede utilizar esta solución si su sitio web está alojado en otros proveedores de alojamiento e intenta cargar archivos directamente en S3 Bucket.

1

Técnicamente es posible, using AWS Signature Version 4, asumiendo que su remote server es el cliente en la siguiente imagen, se puede preparar un formulario en el servidor principal, y enviar los campos del formulario al servidor remoto, para que curl ella. Ejemplo detallado here.

Amazon S3 upload using a POST request

Cuestiones relacionadas