2012-05-08 7 views
14

Ist es möglich, eine Datei von einem Remote-Server auf S3 hochzuladen?Wie lade ich Dateien von einem Remote-Server direkt auf Amazon S3 hoch?

Der Remote-Server ist im Grunde ein URL-basierter Dateiserver. Beispiel, mit http://example.com/1.jpg, dient es dem Bild. Es macht nichts anderes und kann auf diesem Server keinen Code ausführen.

Es ist möglich, einen anderen Server S3 zu haben, zu sagen, eine Datei hochzuladen von http://example.com/1.jpg

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

Antwort

19

Wenn Sie nicht Code auf dem Server ausgeführt werden kann oder dann Anfragen ausführen, nein, können Sie dies nicht tun. Sie müssen die Datei auf einen Server oder Computer, den Sie besitzen, herunterladen und von dort hochladen.

können Sie die Operationen finden Sie auf Amazon S3 bei http://docs.amazonwebservices.com/AmazonS3/latest/API/APIRest.html

Überprüfung der Operationen sowohl für den REST und SOAP-APIs ausführen können, werden Sie sehen, es gibt keinen Weg Amazon S3 eine Remote-URL zu geben und haben es die packen Objekt für dich. Alle PUT-Anforderungen erfordern, dass die Daten des Objekts als Teil der Anforderung bereitgestellt werden. Das bedeutet, dass der Server oder Computer, der die Webanforderung initiiert, über die Daten verfügen muss.

Ich hatte ein ähnliches Problem in der Vergangenheit, wo ich die Facebook Thumbnails meiner Benutzer herunterladen und auf S3 für die Verwendung auf meiner Website hochladen wollte. Die Art, wie ich es gemacht habe, war das Bild von Facebook in den Speicher auf meinem Server herunterzuladen und dann auf Amazon S3 hochzuladen - das Ganze dauerte weniger als 2 Sekunden. Nachdem der Upload in S3 abgeschlossen wurde, schreiben Sie den Bucket/Schlüssel in eine Datenbank.

Leider gibt es keinen anderen Weg, es zu tun.

-1

Sie können den Befehl scp von Terminal verwenden.

1) Terminal, an den Ort gehen, wo es die Datei, die Sie auf den Server diese

2) übertragen möchten, ist der Typ:

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

N. B. Fügen Sie "ec2-user @" vor ec2blablbla hinzu, die Sie von der Ec2 Website erhalten haben !! Das ist so ein wählerischer Fehler!

3) Ihre Datei wird hochgeladen und der Fortschritt wird angezeigt. Wenn es 100% ist, bist du fertig!

+0

Warum sollte jemand das abstimmen? Können Sie erklären? Das funktioniert für mich! – coolcool1994

+4

Abgestimmt, da dieser Beitrag speziell nach S3 und S3 fragt, ist keine normale ec2-Instanz, daher wird kein SSH-Server ausgeführt. Sie müssen ein HTTP-Protokoll verwenden, um mit ihm zu kommunizieren. – mianos

+0

Ich nehme an, Sie könnten eine EC2 Instanz starten, benutzen Sie sie, um die Fernkopie zu machen (Server -> EC2 -> S3) und dann die EC2 Instanz wieder zu zerstören. – Malvineous

1

Ich denke, der Vorschlag zur Verfügung gestellt ist ziemlich gut, können Sie die Datei zu S3 Bucket SCP. Geben Sie die PEM-Datei wird eine Passwort-Authentifizierung weniger, über PHP-Datei können Sie die Erweiterungen validieren. Die PHP-Datei kann die Datei als Argument an den SCP-Befehl übergeben.

Das einzige Problem bei dieser Lösung ist, dass Sie Ihre Instanz in AWS haben müssen. Sie können diese Lösung nicht verwenden, wenn Ihre Website in anderen Hosting-Providern gehostet wird und Sie versuchen, Dateien direkt in S3 Bucket hochzuladen.

1

Technisch möglich ist es, using AWS Signature Version 4, Angenommen, Ihr remote server ist der Kunde im Bild unten, könnten Sie ein Formular in dem Hauptserver, vorbereiten und die Formularfelder auf den Remote-Server, denn es curl senden Sie es. Ausführliches Beispiel here.

Amazon S3 upload using a POST request

Verwandte Themen