22

リモートサーバーからS3にファイルをアップロードすることは可能ですか?

リモートサーバーは基本的にURLベースのファイルサーバーです。たとえば、 http://example.com/1.jpgを使用すると、画像が提供されます。それ以外のことは何もせず、このサーバーでコードを実行することはできません。

S3にファイルをアップロードするように指示する別のサーバーを持つことができますhttp://example.com/1.jpg

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

4 に答える 4

24

サーバー上でコードを実行したり、リクエストを実行したりできない場合は、いいえ、これを行うことはできません。所有しているサーバーまたはコンピューターにファイルをダウンロードし、そこからアップロードする必要があります。

Amazon S3で実行できる操作は、http: //docs.amazonwebservices.com/AmazonS3/latest/API/APIRest.htmlで確認できます。

RESTAPIとSOAPAPIの両方の操作を確認すると、Amazon S3にリモートURLを指定して、オブジェクトを取得する方法がないことがわかります。すべてのPUTリクエストでは、オブジェクトのデータをリクエストの一部として提供する必要があります。つまり、Web要求を開始しているサーバーまたはコンピューターには、データが必要です。

過去に同様の問題が発生し、ユーザーのFacebookサムネイルをダウンロードして、自分のサイトで使用するためにS3にアップロードしたいと思っていました。私が行った方法は、Facebookからサーバーのメモリに画像をダウンロードしてからAmazonS3にアップロードすることでした。完全な処理には2秒もかかりませんでした。S3へのアップロードが完了したら、バケット/キーをデータベースに書き込みます。

残念ながら、それを行う他の方法はありません。

于 2012-05-08T08:32:01.183 に答える
1

提供された提案は非常に良いと思います。ファイルをS3バケットにSCPできます。pemファイルを与えると、パスワードなしの認証になります。PHPファイルを介して、拡張子を検証できます。PHPファイルは、SCPコマンドの引数としてファイルを渡すことができます。

このソリューションの唯一の問題は、AWSにインスタンスが必要なことです。ウェブサイトが他のホスティングプロバイダーでホストされていて、ファイルをS3バケットに直接アップロードしようとしている場合は、このソリューションを使用できません。

于 2015-09-11T13:39:31.323 に答える
1

技術的には、AWS署名バージョン4を使用して、下の画像の顧客であると仮定してremote server、メインサーバーでフォームを準備し、フォームフィールドをリモートサーバーに送信することができますcurl。詳細な例はこちら

POSTリクエストを使用したAmazonS3のアップロード

于 2015-09-29T22:04:43.387 に答える
-4

ターミナルからscpコマンドを使用できます。

1)ターミナルを使用して、サーバーに転送したいファイルがある場所に移動します

2)これを入力します:

scp -i yourAmazonKeypairPath.pem  fileNameThatYouWantToTransfer.php ec2-user@ec2-00-000-000-15.us-west-2.compute.amazonaws.com:

注意:Ec2 Webサイトから取得したec2blablblaの前に、「ec2-user@」を追加してください。これは非常に厄介なエラーです!

3)ファイルがアップロードされ、進行状況が表示されます。100%になると完了です!

于 2013-08-08T21:11:38.443 に答える