2016-03-03 82 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