[英]S3 Iterate through Bucket/Folders/Files
我正在使用 s3.listObjects 遍历 S3 存储桶,但出现此错误:{ [UnexpectedParameter: Unexpected key 'Key' found in params] 下面是我正在使用的代码: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'}; }); };
谁能建议我在这里做错了什么? 谢谢
List objects 不将键作为参数,因为它想向您列出存储桶中的所有键。 实际上,它只是在寻找您告诉它要列出哪个存储桶的内容。 此外,它确实需要一些其他参数来帮助过滤结果和返回的最大对象数。
// 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; });
如果 a 是您的存储桶并且图像位于a/b/c
文件夹下。 然后只需使用 Bucketname 作为“a”并使用图像键添加路径。
否则,只需将 go 发送到您的 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 } };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.