S3通过Bucket/Folders/Files迭代

use*_*327 1 amazon-s3 node.js

我正在使用s3.listObjects迭代S3存储桶,但我收到此错误:{[UnexpectedParameter:在params中找到意外的键'Key']下面是我正在使用的代码: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'};

});
};
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我在这里做错了什么?谢谢

pet*_*teb 5

列表对象不会将键作为参数,因为它希望列出存储桶中的所有键.真的只是在找你告诉它哪个桶列出了内容.此外,它还需要一些其他参数来帮助过滤结果和返回最大数量的对象.

AWS.S3.listObjects文档

// 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'
};
Run Code Online (Sandbox Code Playgroud)

从本质上讲,API正在向您传达您传递的不必要参数.

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; 
});
Run Code Online (Sandbox Code Playgroud)