我使用Javascript从AWS S3存储桶获取文件名。从存储桶中获得文件名的完整列表后,我将对其进行解析和处理并将其列出在前端。在这种情况下,我想摆脱当充满大量数据的存储桶(即)当我尝试处理大量数据时会耗尽内存的问题。因此,我只需要第一层的文件名。
示例:
S3存储桶中的完整对象:
{
new_folder: {...},
some_file.png: {...}
}
这里我只需要名称-> new_folder,some_file.png
下面是我现在使用的代码:
const AWS = require('aws-sdk');
export default async function wasabiActions(dataObj) {
var accessKeyId = '************';
var secretAccessKey = '********************';
var wasabiEndpoint = new AWS.Endpoint('s3.us-west-1.wasabisys.com');
var s3 = await new AWS.S3({
endpoint: wasabiEndpoint,
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
var params = {
Bucket: 'bucket_name',
};
s3.listObjectsV2(params, function(err, data) {
if (!err) {
var files = [];
data.Contents.forEach(function(element) {
files.push(element.Key.split('/').filter((name) => name.length > 0));
});
console.log(files);
var parsedData = wasabiDataParser(files);
console.log(parsedData);
}
});
}
提前谢谢! :)
答案 0 :(得分:0)
您可以使用分页。某些AWS操作返回的结果不完整,需要后续请求才能获得整个结果集。在此处查看更多详细信息。 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html