Google cloud platform 如何从GCP函数GUI调用PubSub函数
我部署了以下功能:Google cloud platform 如何从GCP函数GUI调用PubSub函数,google-cloud-platform,google-cloud-functions,google-cloud-pubsub,Google Cloud Platform,Google Cloud Functions,Google Cloud Pubsub,我部署了以下功能: interface MessageData { reviewId: string; } export const applyPreAssessRules = functions .pubsub.topic("applyPreAssessRules") .onPublish(async (message) => { const { reviewId } = message.json as MessageData; ... } 云平台GU
interface MessageData {
reviewId: string;
}
export const applyPreAssessRules = functions
.pubsub.topic("applyPreAssessRules")
.onPublish(async (message) => {
const { reviewId } = message.json as MessageData;
...
}
云平台GUI提供了一个页面来测试功能,但我不知道如何格式化输入
我尝试过几件事,包括:
{"reviewId": "LRuvmv14u7c47IRiravi"}
我一直得到以下输出:
错误:函数执行失败。细节:
第一个参数必须是string、Buffer、ArrayBuffer、Array或类似数组的Object类型之一。接收类型未定义
我错过了什么
我已经使用Firebase部署了该函数。不知道这是否有区别…事实上,@eespinola几乎把你指向了正确的方向。如果仔细检查he提供的,您会发现云函数默认订户代码段:
/**
*从云发布/子主题上的消息触发。
*
*@param{object}pubsub消息云发布/订阅消息对象。
*@param{string}pubsubMessage.data云发布/订阅消息的“data”属性。
*/
exports.subscribe=(pubsubMessage)=>{
//打印Pub/Sub中的数据,以证明其有效
log(Buffer.from(pubsubMessage.data,'base64').toString());
};
此代码段显示pubsub事件包含一个名为“data”的字段,该字段是base64编码的字符串。此外,如果您在API文档中搜索PubSub,您将找到消息的语法:
{
"data": string,
"attributes": {
string: string,
...
},
"messageId": string,
"publishTime": string
}
因此,您需要使用该格式将负载编码为base64字符串,并将其转换回函数中的Javascript对象。仅供确认。功能在Firebase中按预期工作,但不在GCP中?功能本身运行正常。我想知道如何将一个有效的JSON负载从GCP传递给它,因为我们有这个测试。这里有一些关于如何在PubSub中使用云函数的示例。根据您得到的错误,我认为您应该使用
JSON.stringify(messageObject)
JSON.stringify()
方法将对象转换为JSON字符串。我想你没有领会我的意思。我知道如何以编程方式调用pubsub函数。我想知道GUI的功能,所以我想我应该说GUI而不是UI。我将编辑这个问题。我担心这将是答案。在这种情况下,UI作为一个易于使用的界面是非常无用的。它应该为这些属性提供字段,并将JSON转换为base64,以便在数据中使用。要求用户在UI之外转换它简直是胡说八道。我将提交一个功能请求。
{"message": { "json": {"reviewId": "LRuvmv14u7c47IRiravi"}}}
{
"data": string,
"attributes": {
string: string,
...
},
"messageId": string,
"publishTime": string
}