如何仅从AWS S3对象获取顶层文件?

时间:2019-08-08 14:31:20

标签: javascript amazon-web-services amazon-s3

我使用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);
        }
    });
}

提前谢谢! :)

1 个答案:

答案 0 :(得分:0)

您可以使用分页。某些AWS操作返回的结果不完整,需要后续请求才能获得整个结果集。在此处查看更多详细信息。 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html