Google CloudにプロジェクトA、B、Cがあり、それぞれにいくつかのクラウド機能があるとします。
プロジェクトCにPub/Subをセットアップして、AとBの関数がサブスクライブできるようにしたいと考えています。
これは可能ですか?カスタム権限で何らかのサービスアカウントをセットアップする必要がありますか?
ありがとう
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" }));
});
};
コメントで述べたように、 プッシュサブスクリプション を設定すると、別のCloud Functionsからトピックにsubscribeできます。
publishto a Pub/Sub topic from another project を実行するには、宛先プロジェクトのサービスアカウントに適切な権限を付与する必要があります。