因此,我在节点中所做的就是将图像上传到S3上的tmp存储桶,然后lambda调整图像的大小并将其保存到特定位置(不同存储桶)。.
现在,我想得到的反馈是lambda是通过操纵完成的。...通常,我会知道,仅通过检查资源是否存在即可,方法是:waitFor: objectExists
var params = {
Bucket: 'STRING_VALUE', /* required */
Key: 'STRING_VALUE', /* required */
};
s3.waitFor('objectExists', params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
所有好东西和花花公子...第一次工作...但是如果资源已经存在,则无法按预期工作....所以我需要检查它是否存在新版本...亚马逊的文档说有一个名为IfModifiedSince
的选项,它需要一个日期...
所以,如果我做这样的事情:
const date = new Date();
const minute = date.getMinutes();
date.setMinutes(minute - 1); // it's just for illustration purposes, not last code ;)
var params = {
Bucket: PLAYESR_BUCKET,
Key: file,
IfModifiedSince: date,
};
s3.waitFor('objectExists', params, function(err, data) {
...
我得到一个错误:
未找到错误:资源不在状态objectExists
{
message: 'Resource is not in the state objectExists',
code: 'ResourceNotReady',
region: null,
time: 2018-08-07T09:16:44.441Z,
requestId: '6AFB651A109CD28F',
extendedRequestId: 'xxx',
cfId: undefined,
retryable: true,
statusCode: 404,
retryDelay: 5000
}
再次,我第一次这样做,它运行良好。 文件一旦存在,我就会收到此错误
答案 0 :(得分:0)
正如Michae l建议的那样,我不是在检查特定对象是否存在(正如他提到的那样,它可能会获得覆盖标志)...每次创建/覆盖并创建${timestamp}.json
时,而是检查它的存在。...可能不是最优雅的方法,但要完成工作