2017-12-06 15 views
0

私はS3でオブジェクトが作成されたときに実行されるラムダを持っていますが、15分後にこのラムダを再スケジュールする必要がある場合もあります。AWS S3ラムダイベントを再スケジュールするにはどうすればいいですか?

私のラムダが2回目に実行されるときに、同じイベント引数が必要ですが、バケツとパス以外のフィールドは気にしません。 event.Records[0].s3.bucket.nameevent.Records[0].s3.object.key。しかし同じことをするのは簡単ですevent

私の代わりに、そのデータをダイナモに保存し、そこから15分(ひどい)を読み取る別のラムダを使用します。

しかし、私は現在の関数を再スケジュールし、同じ引数を渡すだけで良いでしょう。このような 何か:笑それらの15分のための私を充電AWSのsetTimeoutのようなもののなし

exports.handler = (event, context, callback) => { 
    if(xyz) 
     reschedule(15 * 1000 * 60, 'ThisLambdaName', event, context); 
} 

何か。

答えて

4

TTL、DynamoDB StreamsおよびAWS Lambdaを使用してDynamoDBを使用できます。

DynamoDBにデータを保存し、15分後にTTLを設定します。

アイテムのTTLに達すると、DynamoDBストリームが作成され、元のデータで元の機​​能を再度トリガすることができます。ほとんどの場合、S3とDynamoDB Streamsのイベントを別々に処理するために、ハンドラにいくつかの変更を加える必要があります。

参考文献:あなたの答えのための

+0

おかげで、私は、ダイナモを使用するか、自分でデータを保存し、前方よりストレートにそれを行うための代替があるホッピングましたしかし、決してそうではありません。 –

+0

あります。しかし、あなたが言及したように、それを積極的にチェックしなければなりません(例えば、15分ごと)。 – dashmug

関連する問題