【发布时间】:2021-12-11 17:43:13
【问题描述】:
Lamda 结束进程并且它不等待 API 响应。这是我的代码:
exports.handler = async (event, context, cb) => {
try {
console.log('FETCHING RECORDS FROM DATOCMS')
const allItems = await client.items.all({}, { allPages: true })
if (!fs.existsSync(backupDir)){
// Create backup directory
console.log('CRETING BACKUP DIRECTORY')
fs.mkdirSync(backupDir, { recursive: true });
}
console.log('FILL JSON WITH RECORDS FETCHED FROM DATOCMS')
fs.writeFileSync('backup/records.json', JSON.stringify(allItems, null, 2));
console.log('ADDING BACKUP FOLDER TO ZIP')
zip.addLocalFolder(backupDir);
const zipFileContents = zip.toBuffer();
const params = {
Bucket: S3_BUCKET,
Key: `backup_zip-${backupDate}`,
Body: zipFileContents,
ContentType: "application/zip",
ContentDisposition: `attachment; filename="${fileName}-${backupDate}"`
}
console.log('UPLOADING ZIP TO S3', params)
s3.putObject(params, (err, data) => {
if (err) {
cb(null, 'Error')
throw new Error('The zip file could not be uploaded', err);
}
console.log('Uploaded correctly')
cb(null, 'Success')
fs.rmdirSync(backupDir, { recursive: true });
})
} catch (err) {
cb(null, 'Error..')
throw new Error('An error occurred', err)
}
}
我也尝试添加这两行,但没有成功
setInterval(() => {}, 1000);
context.callbackWaitsForEmptyEventLoop = false;
谁能帮帮我? 我一直在测试 Promises、Async/Await、Callbacks,但没有运气。谢谢!
【问题讨论】:
标签: javascript node.js amazon-web-services aws-lambda