如何知晓Cloud Storage触发器的重试情况并实现精准日志记录?
问题描述
我阅读了Firebase官方的Cloud Functions重试文档,已将最佳实践应用到我的Cloud Function中,观察到出错时函数确实会重试,但重读文档后仍有三个困惑:
- 如何确认该触发器触发的函数已重试?
- 如何尽可能详细地记录函数的重试情况?
- 若重试失败,又该如何检测并记录失败信息?
示例代码
以下是我使用的Cloud Storage触发器代码:
const { onObjectFinalized, onObjectDeleted, onObjectMetadataUpdated } = require('firebase-functions/v2/storage'); const env = require('./env.dev.json'); exports.storageInsertTrigger = onObjectFinalized({ bucket: env.BUCKET_ARRAY[1], memory: '2GiB', timeoutSeconds: 120, retry: true }, async event => { const eventAge = Date.now() - Date.parse(event.time); const eventMaxAge = 10000; const metadata = event.data ? Object.assign({}, event.data.metadata) : {}; const eventId = event.id; // 忽略过久的事件 if (eventAge > eventMaxAge) { console.log(`DROPPING EVENT TRIGGERED - PATH FILE: ${event.data.name} / EVENT ID: ${eventId} with age ${eventAge} ms.`, "[EVENT MAX AGE REACHED]"); return Promise.resolve(); } // .... 数据处理逻辑 .... => 创建用于Firestore插入的newObjFS对象 const functionResult = await admin.firestore().collection(myCollection).doc(eventId).set(newObjFS).then(() => { console.log(`FIRESTORE - Object ID: ${event.data.name} - Event ID: ${eventId}`); return Promise.resolve(); }).catch((error) => { console.log(error); return Promise.reject(error); }); return functionResult; } catch (error) { console.error(error); return Promise.reject(error); } });
内容的提问来源于stack exchange,提问作者HackTDa
相关产品推荐
相关产品推荐

