2017-06-26 20 views
0

S3からAPIゲートウェイURL経由で大きなバイナリをダウンロードしようとしています。 APIゲートウェイの最大ダウンロードサイズは限られているので、基本的なURLをAmazon S3に(swaggerファイルで)提供して、ダウンロードしたいバイナリにフォルダ/アイテムを追加できると思った。AWS APIゲートウェイをS3バイナリにリダイレクト

しかし、私が知るのは、ラムダ関数によるリダイレクトAPI Gatewayですが、私はそれを望んでいません。

リダイレクトが既に設定されているスワッガーファイルが必要です。

私はs3-url/folder/item

にリダイレクトしたい<api_url>/folder/itemを呼び出すのであれば、これは可能ですか?そしてもしそうなら、どうですか?

例:

  • S3:https://s3.eu-central-1.amazonaws.com/folder/item(項目=大きなバイナリファイル)
  • APIゲートウェイ:https://<id>.execute-api.eu-central-1.amazonaws.com/stage/folder/item - >

答えて

1

私がもしわからないS3のURLにリダイレクトあなたは、リクエストを、バックエンドなしでAPI Gatewayを介してpresigned S3 urlにリダイレクトして、presigned S3 urlを計算することができます。 presigned S3 url機能は、APIの代わりにSDKによって提供されます。あなたは、予約されたS3のURLと戻り値を計算するためにラムダ関数を使う必要があります。

var AWS = require('aws-sdk'); 
AWS.config.region = "us-east-1"; 
var s3 = new AWS.S3({signatureVersion: 'v4'}); 
var BUCKET_NAME = 'my-bucket-name' 

exports.handler = (event, context, callback) => { 

    var params = {Bucket: BUCKET_NAME, Key: event.path}; 
    s3.getSignedUrl('putObject', params, function (err, url) { 
     console.log('The URL is', url); 
     callback(null, url); 
    }); 

}; 
+0

ステージングされたS3 URLが計算され、ステージのスワッガーファイルに設定されます。これは、swaggerファイルを作成して展開するビルドシステムによって作成されます。 ラムダ経由のソリューションはどこにでも見つかりましたが、より多くのコードを扱うことができます。 :/ –

関連する問題