2017-08-15 6 views
0

AWS Lambdaには、REST APIから.zipを取り出し、その内容を抽出して別のものに内容を表示する機能がありますビューアアプリ。ルーティング用にexpressjsを使用していますが、私はrequestモジュールを使用してリクエストを処理しています。ExpressJSとAWS Lambda - .zipへのGET応答をパイプでつなぐ

私app.jsは、次のようになります。

app.get('/', function(req, res) { 

    var r = request(queryURL); // Where queryURL is a get request to fetch a .zip file 

    r.on('response', function(response) { 
     response.pipe(fs.createWriteStream('/tmp/testFile.zip')) 
      .on('close', function() { 
       res.send('Test message'); 
     }) 
    }) 
}) 

module.exports = app; 

問題は、私はその/tmp/testFile.htmlに無関係htmlとのパイプを取得し、うまくres.sendFile('/tmp/testFile.html')でそれをレンダリングすることができますresponse.pipe(fs.createWriteStream(...)); であると思われます。同じAPIから個々の画像を取得することもできます。しかし、.zipファイルに関するものは何かを破壊します。

これはすべてローカルで実行されますが、ラムダにアップロードすると破損し、ブラウザに{"message": "Internal server error"}が表示されます。ログにアクセスする方法がわかりません.ClaudiaJSを使用して機能をアップロードします。ここで

は私のハンドラ関数は、関連するかもしれない場合には、次のとおりです。

'use strict' 
const awsServerlessExpress = require('aws-serverless-express') 
const app = require('./app') 
const server = awsServerlessExpress.createServer(app) 
exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context) 

ありがとう!

答えて

0

最後に、クラウドウォッチログにアクセスする方法を理解し、ラムダがタイムアウトしていることに気付きました。タイムアウトを3秒から30秒に変更して以来、うまくいきました。

関連する問題