Google cloud platform 是否可以部署后台功能;myBgFunctionInProjectB“;在;项目b“;并由我的话题引发;my-topic-project-a“;从「;项目a“;

Google cloud platform 是否可以部署后台功能;myBgFunctionInProjectB“;在;项目b“;并由我的话题引发;my-topic-project-a“;从「;项目a“;,google-cloud-platform,google-cloud-functions,google-cloud-pubsub,Google Cloud Platform,Google Cloud Functions,Google Cloud Pubsub,可以在项目“project-a”中创建主题“my-topic-project-a”,以便它可以公开显示(这是通过将角色“发布/订阅订户”设置为“allUsers”来实现的)。 然后从项目“project-b”中,我可以创建对“my-topic-project-a”的订阅,并从“my-topic-project-a”中读取事件。这是使用以下gcloud命令完成的: (这些命令在项目“project-b”上执行) 因此,在“project-a”中链接到“my-topic-project-a”的“pr

可以在项目“project-a”中创建主题“my-topic-project-a”,以便它可以公开显示(这是通过将角色“发布/订阅订户”设置为“allUsers”来实现的)。 然后从项目“project-b”中,我可以创建对“my-topic-project-a”的订阅,并从“my-topic-project-a”中读取事件。这是使用以下gcloud命令完成的: (这些命令在项目“project-b”上执行)

因此,在“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.
有没有办法做到这一点,或者这实际上是不可能的


谢谢

所以,似乎实际上不可能做到这一点。我通过两种不同的方式检查发现:

  • 如果试图通过创建函数,则需要填写要运行此函数的位置,例如,
    projects/PROJECT\u for\u function/locations/PREFERRED-location
    ,然后提供一个请求正文,如下所示:
{

“事件触发器”:{

“资源”:“项目/项目主题/主题/您的主题”

“eventType”:“google.pubsub.topic.publish”

},

“姓名”: “项目/项目功能/位置/首选位置/功能/名称功能”

}

这将导致400错误代码,并显示一条消息:

{

“字段”:“事件\触发器.资源”

“说明”:“主题必须与功能位于同一项目中。”

}

它也会说您错过了源代码,但是,尽管如此,API已经表明这是不可能的

  • 对于同一个问题,公共问题跟踪程序中已经有一个。请记住,它没有ETA

我也试着从
gcloud
中执行此操作,正如您尝试的那样。我显然得到了相同的结果。然后我尝试从命令中删除
projects/project-a/topics/
位,但这会在创建函数的同一项目中创建一个新主题,因此,这不是您想要的。

好的,谢谢。我想确保我没有遗漏任何内容在转移到另一个解决方案之前
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.