我试图在云函数中设置一个计费PubSub侦听器,以限制计费并防止意外成本。我看了一下youtube系列,但开始使用v2实现它,如here所示。我一直在使用google cloud CLI发送一个示例JSON(在Windows上),并且遇到了这个非常烦人的JSON解析错误。(来自云函数的日志)分别为:
命令:
gcloud pubsub topics publish billing --message '{“alertDisplayName”:“name-of-budget”,“alertTimeHoldExceeded”:1,“costAmount”:100.01,“costIntervalStart”:“2019-01-01T00:00:00Z”,“alertAmount”:100,“alertAmountType”:“SPECIFIED_AMOUNT”,“currencyCode”:“USD”}'
云函数:
import { onMessagePublished } from "firebase-functions/v2/pubsub";
import * as logger from "firebase-functions/logger";
exports.onBillingAlert = onMessagePublished(
"projects/thrilling-tales/topics/billing",
async (event) => {
logger.debug("onBillingAlert");
logger.debug(event.data.message.json);
}
);
字符串
错误:
无法将Pub/Sub消息数据分析为JSON:JSON中位置1处的意外标记b
编辑:JSON有效,并遵循Firebase格式
另外,我设法记录了云函数接收到的字符串:
{价格显示名称:预算名称,警报金额超出:1,成本金额:100.01,costIntervalStart:2019-01- 01 T00:00:00 Z,价格金额:100,价格金额类型:SPECIED_AMOUNT,货币代码:USD}
奇怪的是,似乎双引号被删除了?似乎是Firebase / Google Cloud的一个错误,但我不完全确定。我也尝试切换到v1,但使用Google Cloud时出现了相同的错误。
**编辑2:**我尝试使用Google Cloud Console测试该功能,如这里所述,并完美地获得了日志。所以,如果我不得不猜测,我会说这是Google Cloud CLI for Windows中的一个错误。但奇怪的是之前没有人注意到这一点。可能在最近的更新中出现了。
1条答案
按热度按时间pbossiut1#
正如Jon在评论中指出的那样:
如果你在Windows中使用它,我怀疑是命令提示符删除了双引号。
总之,如果你在Windows上,你有两个选择:
1.从Bash运行gcloud CLI命令(您可能已经安装了Git Bash),这是Linux和MacOS上的默认shell。
1.使用任何其他方式发送PubSub消息。我建议使用Google Cloud Console。