2016-03-03 68 views
1

我使用s3.listObjects遍历S3存储桶,但我得到这个错误:{[UnexpectedParameter:在参数中发现意外的关键'钥匙] 下面是我使用的代码: exports.handler =函数(事件上下文){S3迭代通过桶/文件夹/文件

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'}; 

}); 
}; 

任何人都可以请建议我究竟做错了什么? 感谢

回答

4

List对象并不需要一个关键的参数,因为它想在桶中的所有的密钥列表给你。真的只是找你,告诉它列出哪个存储桶的内容。此外,它还需要一些其他参数来帮助过滤结果以及最大数量的对象返回。

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' 
}; 

从本质上讲,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; 
}); 
+0

现在的工作。谢谢 – user1042327

+0

也可以使用** listObjectsV2 **方法代替,检查https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjectsV2-property – IvanM