2017-11-06 48 views
4

3K個のオブジェクト(ファイル)をS3にロードしました。そのS3バケットにロードされる各ファイルのイベントトリガーがあります。S3イベントトリガーはスケーラブルですか?

ラムダは約300個のオブジェクトに対してのみイベントトリガーを受信して​​います。再試行(S3から戻ってS3に戻す)すると、イベントの残りの400オブジェクトがラムダに届かなくなってしまいました。

私がここで行うことができないことを助け、作成したオブジェクトの数に応じてどのようにスケールすることができますか?

var async = require('async');                                             
var aws = require('aws-sdk');                                             
var s3 = new aws.S3();                                              
var kinesis = new aws.Kinesis();                                            
var sns = new aws.SNS();                                              
var config = require('./config.js');                                           


var logError = function(errormsg) {                                           
    sns.publish({                                                
     TopicArn: config.TopicArn,                                           
     Message: errormsg                                              
    }, function(err, data) {                                             
     if (err) {                                               
      console.log(errormsg);                                           
     }                                                  
    });                                                  
};                                                   


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

    var readS3andSendtoKinesis = function(record, index, cb) {                                    
     var params = {                                              
      Bucket: record.s3.bucket.name,                                         
      Key: record.s3.object.key                                           
     }; 
     console.log('Received File: ' + record.s3.object.key);                                                 
     s3.getObject(params, function(err, data) {                                       
      if (!err) {                                              
       var kinesisParams = {                                           
        Data: data.Body.toString('utf8'),                                       
        PartitionKey: config.PartitionKey,                                      
        StreamName: config.StreamName                                        
       };                                               
       kinesis.putRecord(kinesisParams, function(err, data) {                                  
        if (err) {                                            
         // Handle Kinesis Failures                                       
         logError(JSON.stringify(err, null, 2));                                    
        }                                               
        cb(null, 'done');                                           
       });                                               
      } else {                                               
       // Handle S3 Failures                                           
       logError(JSON.stringify(err, null, 2));                                      
       cb(null, 'done');                                            
      }                                                 
     });                                                 
    };                                                  

    async.eachOfLimit(event.Records, 1, readS3andSendtoKinesis, function(err) {                                
     callback(null, 'Done');                                            
    });                                                  
}; 

誰もが関連付けられているラムダはこちらCloudWatchのメトリックを共有し、CloudWatchのを見てお勧めしますので、

enter image description here

+0

ラムダ関数の呼び出し回数を調べて確認していますか? – dzm

+0

呼び出し回数と、イベントに送信されたキーを記録します。作成されたオブジェクトの数と一致しません。 – Kannaiyan

+0

's3:ObjectCreated:*'イベントでトリガーしましたか? –

答えて

0

AWSラムダは、制御状況のうち、回避スロットル構成を有しています。

S3の場合、Lambda呼び出しもpermissionsに依存するため、これらのアクセス許可を確認する必要があります。

S3はストリームベースのソースではないため、同期シナリオが表示されている可能性があります。throttlingが制限に達し、S3が再試行していません。ラムダのスロットリングとエラー429を確認してください。

関連する問題