2016-07-04 9 views
3

私は、クライアントが特定のS3バケットに画像をアップロードするために使用できる事前に署名URLを生成しようとしています。私は正常にそうように、ファイルを取得するリクエストを生成した:有効期限と方法は日付で、HTTPMETHOD最大のコンテンツ長をAmazon S3のための事前署名PUT URLを生成

GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucket, filename); 
urlRequest.setMethod(method); 
urlRequest.setExpiration(expiration); 

は、それぞれのオブジェクト。

今私は、ユーザーがファイルを置くことを許可するURLを作成しようとしているが、私は最大のコンテンツ長を設定する方法を見つけ出すことはできません。私はPOST policiesに関する情報を見つけましたが、私はここに置か使用することを好むだろう - それができていないようですけれども、私はまた、JSONを構築しないようにしたいと思います。

最後に、APIゲートウェイからの画像アップロードをラムダに渡す方法がありますので、ファイルタイプとサイズを検証した後にラムダからS3にアップロードすることができます(これは理想的ではありません)。

答えて

1

私がアップロードのファイルサイズを制限するために管理していないが、私は一時的なバケツへのアップロードでアクティブ化されたラムダ関数を作成することになりました。この関数は

public static void checkUpload(S3EventNotification event) { 

以下(私はオンラインで見つけるすべてのガイドはもう存在していないようS3Eventクラスを参照しているため、これは注目すべきである)

機能のような署名は、ファイルのメタデータを引っ張っています(ファイル自体ではない、それは潜在的に大きなダウンロードとしてカウントされる)と、ファイルサイズをチェックします。受け入れ可能であれば、ファイルをダウンロードして宛先バケットにアップロードします。そうでない場合は、単にファイルを削除します。

これは理想的なものではありません。条件を満たすことができないと思われますが、単に表示されません(S3はアップロード時にラムダの反応を気にせずに200のステータスコードを発行するためです)。

これは、効果的な回避策ではなく、ソリューションですので、私はこの答えを受け入れることはありません。

関連する問題