Unable to fetch list of all S3 objects using NodeJs

Viewed 223

Kindly excuse my knowledge with NodeJs, as I've just started with it. I've following lambda function which isn't fetching list of objects (more than 1000) in S3 and stuck in infinite loop, resulting lambda timimg out. Not sure what's wrong here

Code:

console.log('Loading');
const AWS = require('aws-sdk');
var request=true;
const awsOptions = {
    region: "us-east-1"
};
const s3 = new AWS.S3(awsOptions);
var list = [];
exports.handler = async (event, context, callback) => {
    
    const SrcBucket = event.Records[0].s3.bucket.name;
    const trigger_file = event.Records[0].s3.object.key;

    var bucketParams = {
        Bucket: SrcBucket,
        Prefix: 'Test/'
    };
    do
    {
        s3.listObjects(bucketParams, (err, data) => {
            if (err)
                console.log("Error", err);
            else
            {
                list.push(data.Contents);
                if (data.IsTruncated)
                    bucketParams.Marker = data.NextMarker;
                else
                    request = false;
            }
        });
    } while (request);

    callback(null, {
        listLen: list.length
    });
0 Answers
Related