繁体   English   中英

S3 遍历存储桶/文件夹/文件

[英]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 不将键作为参数,因为它想向您列出存储桶中的所有键。 实际上,它只是在寻找您告诉它要列出哪个存储桶的内容。 此外,它确实需要一些其他参数来帮助过滤结果和返回的最大对象数。

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

从本质上讲,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM