2016-04-10 14 views
1

AWS Lambdaを初めて使用しています。私はnodejsでS3 APIを呼び出すことについて私の髪を引っ張っています。私は、S3オブジェクトの内容を読みたいので、ここに私のコードです:Lambda(nodejs)でs3関数を使用できません

exports.handler = function (event, context) { 
var AWS = require('aws-sdk'); 
var s3 = new AWS.S3(); 

s3.getObject({ 
    Bucket: 'lambda-bucket', 
    Key: 'test.html' 
}, function (err, data) { 
    console.log('this is happening!'); 
    console.log(data); 
}); 

context.done(); 
} 

私はAPIドキュメントを踏襲し、私もCloudWatchの中に最初のログが表示されません。私もputObjectを試しましたが、うまく動作していないようです。私のランタイムはnodejs4.3です。私はここでいくつかの助けを得ることができたら幸いです。

ありがとうございました。

答えて

4

AWSラムダに取り組む前にNodeJSで非同期呼び出しがどのように機能するかを学習することをお勧めします。あなたのコードでs3.getObject()への呼び出しが完了する前にcontext.done()に電話しています。 S3コールが終了する前に、この機能が終了しています。 context.done()コールをgetObjectコールバックに移動すると、これが解決されます。

exports.handler = function (event, context) { 
    var AWS = require('aws-sdk'); 
    var s3 = new AWS.S3(); 

    s3.getObject({ 
    Bucket: 'lambda-bucket', 
    Key: 'test.html' 
    }, function (err, data) { 
    console.log('this is happening!'); 
    console.log(data); 

    // Now that the S3 call is complete, 
    // we can terminate the Lambda function execution 
    context.done(); 
    });  
}