В проекте подписки на странице 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" }));
});
};