google-cloud-platform - 是否可以在“project-b”中部署后台功能“myBgFunctionInProjectB”并由“project-a”中的我的主题“my-topic-project-a”触发
问题描述
可以在项目“project-a”中创建一个主题“my-topic-project-a” ,这样它就可以公开可见(这是通过将角色“pub/ subsubscriber”设置为“allUsers”来完成的) . 然后从项目"project-b"我可以创建对"my-topic-project-a"的订阅并从" my-topic-project-a" 读取事件。这是使用以下 gcloud 命令完成的:(这些命令在项目“project-b”上执行)
gcloud pubsub subscriptions create subscription-to-my-topic-project-a --topic projects/project-a/topics/my-topic-project-a
gcloud pubsub subscriptions pull subscription-to-my-topic-project-a --auto-ack
所以好的,当在“project-a”中链接到“my-topic-project-a”的“project-b”中创建订阅时,这是可能的。
在我的用例中,我希望能够在“project-b”中部署一个后台函数“myBgFunctionInProjectB”,并由“project-a”中的“my-topic-project-a”主题触发
但是......这似乎是不可能的,因为当您在部署云功能时提供完整的主题名称时,gcloud CLI 不高兴:
gcloud beta functions deploy myBgFunctionInProjectB --runtime nodejs8 --trigger-topic projects/project-a/topics/my-topic-project-a --trigger-event google.pubsub.topic.publish
ERROR: (gcloud.beta.functions.deploy) argument --trigger-topic: Invalid value 'projects/project-a/topics/my-topic-project-a': Topic must contain only Latin letters (lower- or upper-case), digits and the characters - + . _ ~ %. It must start with a letter and be from 3 to 255 characters long.
有没有办法做到这一点,或者这实际上是不可能的?
谢谢
解决方案
因此,似乎实际上不可能做到这一点。我通过两种不同的方式检查它找到了它:
- 如果您尝试通过API explorer创建函数,则需要填写要运行此函数的位置,例如 ,
projects/PROJECT_FOR_FUNCTION/locations/PREFERRED-LOCATION
然后提供请求正文,如下所示:
{
“事件触发器”:{
“资源”:“项目/PROJECT_FOR_TOPIC/topics/YOUR_TOPIC”,
“eventType”:“google.pubsub.topic.publish”
},
“名称”:“项目/PROJECT_FOR_FUNCTION/locations/PREFERRED-LOCATION/functions/NAME_FOR_FUNTION
}
这将导致 400 错误代码,并显示一条消息:
{
"field": "event_trigger.resource",
"description": "主题必须和函数在同一个项目中。"
}
它还会说您错过了源代码,但是,API 已经表明这是不可能的。
- 在 Public Issue Tracker 中已经有一个针对同一问题的未解决问题。请记住,它没有预计到达时间。
gcloud
正如您尝试的那样,我也尝试从 执行此操作。我显然有同样的结果。然后我尝试projects/project-a/topics/
从我的命令中删除该位,但这会在您创建函数的同一个项目中创建一个新主题,因此,这不是您想要的。
推荐阅读
- javascript - 使动画对声音文件做出反应的 Javascript 代码在 Edge 中有效,但在 Chrome 中无效
- html - 网站未加载 CSS,网页未加载图像
- java - 创建安装在当前模块内的另一个模块的 guice 注入器
- java - 将arff文件打开到weka时出错
- javascript - Javascript 手风琴
- node.js - 将 JSON 文件作为节点参数传递给 PM2
- scala - Scala过滤多个条件
- aws-lambda - 无服务器 wsgi 无法导入 werkzeug
- azure - Azure 应用服务计划选择多对一计划
- python - 模型预测的值与训练的值相似是否正常?