1

this AWS documentationに続いて、S3ゲートウェイ上のファイルを操作できるAPIゲートウェイで新しいエンドポイントを作成することができました。私が持っている問題は、ファイルサイズ(AWS having a payload limitation of 10MB)です。APIゲートウェイS3への大きなファイルの取得/埋め込み

ラムダ回避策(this link would help with that)を使用せずに、私が疑問に思っていたのは、S3サービスをプロキシとして使用しているのを見て、10MBを超えるファイルを(必要に応じてバイナリとしても)またはそれに関係なく制限はありますか?

私はPUTを試しており、GETは10MBを超えており、各応答は標準"message": "Timeout waiting for endpoint response"です。

Lambdaのように見えますが、誰かがS3をプロキシとして使用しているのか疑問に思うだけです。あなたが大規模なファイルがある場合

おかげ

答えて

3

S3事前署名URLでリダイレクトリンクを返すラムダプロキシ関数を作成できます。

var s3Params = { 
    Bucket: test-bucket, 
    Key: file_name, 
    ContentType: 'application/octet-stream', 
    Expires: 10000 
}; 

s3.getSignedUrl('putObject', s3Params, function(err, data){ 
    ... 
} 

その後、あなたのラムダ関数のような、あなたのクライアントにリダイレクト応答を返し、

{ 
    "statusCode": 302, 
    "headers": { "Location": "url" } 
} 

あなたは見つけることができるかもしれない:事前に署名したS3のURLを生成すること

例JavaScriptコードあなたが必要とする詳細はdocumentationです。

+0

理想的ではありませんが(これを達成するためにAmazon S3プロキシとしてAPIを使用したいと考えていましたが)、この制限を回避することはできないようです。この回答は私が私が使用すると思うものに私を導いた - AWSでPresigned URL(http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjectPreSignedURLDotNetSDK.html)、ありがとう。 – Hexie

1

は、直接クライアントからS3にアップロードすることを検討してください。 APIエンドポイントを作成して、signed URLを返して、クライアントがプライベートコンテンツのアップロード(To Implement Access Control)に使用するようにすることができます。

また、アップロードを高速化するために、さらに大きなファイルの場合はmulti-part uploadsを使用することを検討することもできます。

+0

提案していただきありがとうございますが、あなたが提案しているものを実行するためにラムダは必要ありませんか? (署名されたURLを返す)?質問に投稿したURLは既にそれを示しており、私の質問はラムダなしでそれを行うことでした。 – Hexie

+0

はい。これには計算サービスが必要です。他のアプローチはほとんどありません。認証にAWSコグニートを使用している場合や、エンドポイントでバックエンドからAmazon STSを呼び出して一時アクセストークンを生成した場合(これはsign urlと似ています)、ブラウザクライアントからS3のプライベートリソースにアクセスできます。 – Ashan

関連する問題