如何确定对象是否存在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 callbackss3.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