Hi ,
i have created a aws lambda function to load all images in s3 bucket with below code:
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = (event, context, callback) => {
var s3Bucket = 'mybucket';
var imagesUrl = [];
var params = {Bucket: s3Bucket,Delimiter: '/',Prefix:'subFolder/'};
s3.listObjects(params, function(err, data){
var bucketContents = data.Contents;
for (var i = 0; i < bucketContents.length; i++){
var urlParams = {Bucket: s3Bucket, Key: bucketContents[i].Key};
s3.getSignedUrl('getObject',urlParams, function(err, url){
imagesUrl.push(url);
});
}
context.succeed(imagesUrl);
});
};
And i want to ask 2 things:
- With my code like that , does it have any problem ?
- It has warning "Don't make function within a loop" at s3.getSignedUrl. How can i resolve this code in aws lambda .
Thanks.
What I have tried:
I want to know about the best way to solve this problem