You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何知晓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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:46:00