web-dev-qa-db-ja.com

さまざまなGoogle CloudプロジェクトでGoogle Cloud Pub / Subを使用できますか?

Google CloudにプロジェクトA、B、Cがあり、それぞれにいくつかのクラウド機能があるとします。

プロジェクトCにPub/Subをセットアップして、AとBの関数がサブスクライブできるようにしたいと考えています。

これは可能ですか?カスタム権限で何らかのサービスアカウントをセットアップする必要がありますか?

ありがとう

9
martosoler

IAMページのサブスクライブプロジェクトで、Pub/Subパブリッシャーの役割を持つ新しいメンバーを追加します。新しいメンバー名は、公開プロジェクトからのserviceaccount-emailです。次に、パブリッシングプロジェクトでクラウド関数を作成し、ページの下部(詳細)で同じサービスアカウントを関数に割り当てます。

以下は、クラウド関数のノードの例です。

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" }));
});
};
5
Calle Engene

コメントで述べたように、 プッシュサブスクリプション を設定すると、別のCloud Functionsからトピックにsubscribeできます。

publishto a Pub/Sub topic from another project を実行するには、宛先プロジェクトのサービスアカウントに適切な権限を付与する必要があります。

0
komarkovich