2016-12-12 9 views
1

現時点では、C#アプリを使用して既知のURLから画像をダウンロードし、AWS S3サーバーにアップロードします。AWS S3にファイルのダウンロードをリクエストできますか?

using (WebClient c = new WebClient()) 
{ 
    var data = c.DownloadData(ad.PhotoUrl); 
    var s3 = new AmazonS3Client(RegionEndpoint.EUWest1); 
    using (var memoryStream = new MemoryStream(data)) 
    { 
     using (var yourBitmap = new Bitmap(memoryStream)) 
     { 
      yourBitmap.Save(memoryStream, ImageFormat.Jpeg); 
      var titledRequest = new PutObjectRequest 
      { 
       CannedACL = S3CannedACL.PublicRead, 
       InputStream = memoryStream, 
       BucketName = myBucket, 
       Key = keyName 
      }; 
      s3.PutObject(titledRequest); 
     } 
    } 
} 

それが正常に動作しますが、私はこの方法を避けたい、私は削除/保存するための一定の巨大な画像流れを持っているので、それは私の帯域幅を殺します。 「ダウンロード」の部分をバイパスすることはできますか?つまり、自分でad.PhotoUrlにある画像をダウンロードするにはAWS S3サーバーに依頼できますか? C#は "遠い要求"には必要ありません。私はそれが可能かどうかを知りたいので、解決策を見つけるために少し掘り下げることができます。

シンプルにするために、私はAWS S3にこう言います。ちょっとこの画像をダウンロードして保存できますか?代わりに:ちょっと、ちょうど私がダウンロードした画像があります、あなたはそれを保存できますか?

答えて

3

S3はこれを行うことができません(実際にはファイルストレージのみを実行するため)が、ダウンロードを開始してS3にファイルをプッシュするラムダ関数を使用して解決できます。ラムダ関数は、AWS SDKまたはAPI-gateway HTTPリクエストを介して呼び出すことができます。

+0

唯一の解決策です。アイデアをありがとう、私はこのソリューションを調査します。 – Gun

関連する問題