如何确定对象是否存在AWS S3 Node.JS SDK

我需要使用AWS开发工具包检查文件是否存在。这是我在做什么:

var params = {

Bucket: config.get('s3bucket'),

Key: path

};

s3.getSignedUrl('getObject', params, callback);

它可以工作,但问题是当对象不存在时,回调(带有参数err和url)不会返回错误,并且当我尝试访问URL时,它会显示“ NoSuchObject”。

getSignedUrl当对象不存在时,该方法是否应该返回错误对象?如何确定对象是否存在?我真的需要打电话给返回的URL吗?

回答:

在创建签名的URL之前,您需要检查文件是否直接从存储桶中存在。一种方法是通过请求HEAD元数据。

// Using callbacks

s3.headObject(params, function (err, metadata) {

if (err && err.code === 'NotFound') {

// Handle no object on cloud here

} else {

s3.getSignedUrl('getObject', params, callback);

}

});

// Using async/await (untested)

try {

const headCode = await s3.headObject(params).promise();

const signedUrl = s3.getSignedUrl('getObject', params);

// Do something with signedUrl

} catch (headErr) {

if (headErr.code === 'NotFound') {

// Handle no object on cloud here

}

}

以上是 如何确定对象是否存在AWS S3 Node.JS SDK 的全部内容, 来源链接: utcz.com/qa/411341.html

回到顶部