我正在使用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'};
});
};
任何人都可以建议我在这里做错了什么? 感谢
答案 0 :(得分:5)
列表对象不会将密钥作为参数,因为它希望列出存储桶中的所有密钥。真的只是在找你告诉它哪个桶列出了内容。此外,它还需要一些其他参数来帮助过滤结果和最多返回的对象。
// 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;
});
答案 1 :(得分:0)
如果a是您的存储桶,并且图像位于a/b/c
文件夹下。然后就用
存储桶名称为“ a”,并使用图片键添加路径。
否则,只需转到您的AWS服务并找到您的图像密钥即可。
在我的情况下,图像位于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
}
};