aws-sdk(节点)S3 NoSuchKey由listObjectsV2返回的键出现错误

时间:2019-12-06 11:10:39

标签: node.js amazon-web-services amazon-s3 aws-lambda aws-sdk

我有一个AWS lambda,它是由 SNS queue。 lambda使用节点10.x作为引擎和aws-sdk,在触发时应从S3收集对象列表并进行一些处理。所有这些对象都有一个带有公共前缀(从SNS事件中提取)的名称。我正在使用listObjectsV2从具有相同前缀的S3存储桶中获取所有对象键(假定可以在一个调用中检索所有对象元数据),然后使用getObject来构建承诺以检索对象数据。 相关代码如下:

const params = {
    Bucket: bucketName,
    Prefix: prefix,
    MaxKeys: maxKeys,
};

const objectsListResponse = await s3.listObjectsV2(params).promise();

const promises = objectsListResponse.Contents.map(o => s3.getObject({
    Bucket: bucketName,
    Key: o.Key,
}).promise());

const results = await Promise.all(promises);

我的问题是有时(并非总是)我遇到NoSuchKey: The specified key does not exist错误。我的假设是,listObjectsV2响应中包含的所有键都是有效的,但事实并非总是如此。有人对此问题有任何建议或解决方法吗?

注意:存储在S3存储桶中的所有对象都具有有效的键名,而没有特殊字符

0 个答案:

没有答案