最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - S3 Iterate through BucketFoldersFiles - Stack Overflow

programmeradmin0浏览0评论

I am iterating through S3 bucket using s3.listObjects but I am getting this error: { [UnexpectedParameter: Unexpected key 'Key' found in params] Below is the code I am using: exports.handler = function(event, context) {

var bucket = event.Records[0].s3.bucket.name;
var key = event.Records[0].s3.object.key;
var params = {
    Bucket: bucket,
    Key: key
};

console.log('bucket name ', bucket);
s3.getObject(params, function(err, data) {
    if (err) {
        console.log(err);

    } else {
        context.succeed(data.ContentType);
    }
});

s3.listObjects(params, function(err, data) {
    if (err) return console.log(err);

    params = {Bucket: 'bucketName'};

});
};

Can anyone please suggest what am I doing wrong here? Thanks

I am iterating through S3 bucket using s3.listObjects but I am getting this error: { [UnexpectedParameter: Unexpected key 'Key' found in params] Below is the code I am using: exports.handler = function(event, context) {

var bucket = event.Records[0].s3.bucket.name;
var key = event.Records[0].s3.object.key;
var params = {
    Bucket: bucket,
    Key: key
};

console.log('bucket name ', bucket);
s3.getObject(params, function(err, data) {
    if (err) {
        console.log(err);

    } else {
        context.succeed(data.ContentType);
    }
});

s3.listObjects(params, function(err, data) {
    if (err) return console.log(err);

    params = {Bucket: 'bucketName'};

});
};

Can anyone please suggest what am I doing wrong here? Thanks

Share Improve this question edited Jul 4, 2022 at 2:48 peteb 19.5k9 gold badges57 silver badges66 bronze badges asked Mar 3, 2016 at 22:41 user1042327user1042327 3872 gold badges7 silver badges17 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 5

List objects doesn't take a key as a parameter since its wants to list all the keys in the bucket to you. Really its just looking for you to tell it which bucket to list the contents of. Additionally it does take some other parameters to help filter results and a max number of objects to return.

AWS.S3.listObjects Docs

// Acceptable Parameters as taken from the AWS.S3.listObjects Docs
var params = {
  Bucket: 'STRING_VALUE', /* required */
  Delimiter: 'STRING_VALUE',
  EncodingType: 'url',
  Marker: 'STRING_VALUE',
  MaxKeys: 0,
  Prefix: 'STRING_VALUE'
};

Essentially, the API is municating to you that you're passing in an unnecessary parameter.

var params = { Bucket: bucket };
s3.listObjects(params, function(err, data) {
  if (err) return console.error(err);

  // data.Contents is the array of objects within the bucket
  console.log(data.Contents);
  return; 
});

if a is your bucket and images are under a/b/c folder . Then Just use Bucketname as "a" and add the path with image key.

Otherwise, just go to your aws service and find out your image key.

In my case images are under ctr/images/serviceImage.

var params = {

  Bucket: "ctr",//bucket name
  Delete: {
    Objects: [
      {
        Key: "images/ServiceImage/01c99e0c-f21e-4860-bf01-e7c79274b0ae.jpg"
      },
      {
        Key: "imgs/ServiceImage/0390cdf2-1989-43cd-8c93-77510dcd597e.jpg"
      }
    ],

    Quiet: false
  }

};

发布评论

评论列表(0)

  1. 暂无评论