Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 我可以在不同的谷歌云项目中使用谷歌云发布/订阅吗?_Google Cloud Platform_Google Cloud Functions_Google Cloud Pubsub - Fatal编程技术网

Google cloud platform 我可以在不同的谷歌云项目中使用谷歌云发布/订阅吗?

Google cloud platform 我可以在不同的谷歌云项目中使用谷歌云发布/订阅吗?,google-cloud-platform,google-cloud-functions,google-cloud-pubsub,Google Cloud Platform,Google Cloud Functions,Google Cloud Pubsub,假设我在Google Cloud中有一个项目A、B和C,每个项目中有几个云函数 我想在项目C中设置一个发布/订阅,以便a和B中的函数可以订阅 这可能吗?我是否需要设置某种具有自定义权限的服务帐户 谢谢正如您在评论中提到的,如果您设置了 您应该在目标项目中为其服务帐户授予正确的权限。在IAM页面上的订阅项目中,添加一个具有发布/订阅发布者角色的新成员,新成员名称是发布项目中电子邮件的serviceaccount。 然后在发布项目中创建一个云函数,并在页面底部(在“更多”下)将相同的服务帐户分配给该

假设我在Google Cloud中有一个项目A、B和C,每个项目中有几个云函数

我想在项目C中设置一个发布/订阅,以便a和B中的函数可以订阅

这可能吗?我是否需要设置某种具有自定义权限的服务帐户


谢谢

正如您在评论中提到的,如果您设置了


您应该在目标项目中为其服务帐户授予正确的权限。

在IAM页面上的订阅项目中,添加一个具有发布/订阅发布者角色的新成员,新成员名称是发布项目中电子邮件的serviceaccount。 然后在发布项目中创建一个云函数,并在页面底部(在“更多”下)将相同的服务帐户分配给该函数

下面是一个云函数的节点示例:

const PubSub = require('@google-cloud/pubsub');
const pubsub = new PubSub();
const topic = pubsub.topic('projects/subscribing-project-name/topics/topic-to- 
publish-to');
const publisher = topic.publisher();

exports.helloWorld = (req, res) => {
const customAttributes = {
message: 'Hello'
};
publisher.publish(Buffer.from("Hello from another project"), customAttributes, 
(err) => {
if (err) {
  res.status(500).send(JSON.stringify({ success: false, error: err.message }));
  return;
}
res.status(200).send(JSON.stringify({ success: true, message: "Message sent to 
pubsub topic" }));
});
};

据我所知,PubSub主题必须与它触发的云函数位于同一个项目中。但是您可以从其他项目发布到该主题。要向其他项目中的函数发送推送通知,我认为这是可能的,因为这是来自发布/订阅服务器的简单HTTP请求。但从其他功能发布是我不确定的事情,我无法具体回答谷歌云功能,但我在一个项目中有一个PubSub,我在另一个项目中从谷歌云Kubernetes引擎上的应用程序访问它(发布和订阅)
GOOGLE\u APPLICATION\u凭证
只需指向一个服务帐户的证书即可访问正确项目中的PubSub。@FrankvanPuffelen您能发表您的评论作为答案吗?谢谢你。实际上我不确定我是对的@ZackK似乎表示可以跨项目调用PubSub,这是OP所问问题的更好答案。我正在项目a中为云功能设置推送订阅,订阅项目B中的主题。项目B为我提供了一些权限,使我能够订阅他们的主题。它工作得很好,但是即使ProjectB删除了我所有的访问权限,我仍然可以听这个主题。因此,在这种情况下,如果项目B希望终止订阅,则项目B无法控制他们自己的主题。是否有一种解决方案,其中项目B完全控制,并且消除了项目之间的任何硬耦合?