Позвольте мне попытаться объяснить вам, что мы пытаемся сделать.
Скажем это быстро: мы хотим предоставить привилегии Pub / Sub Publisher (в нашем GoogleCloud) для GMail-API, который находится за пределами наше GoogleCloud.
Что у нас есть: Следующие инструкции здесь: https://developers.google.com/gmail/api/quickstart/ruby Мы создали проект для GMail-API и учетные данные в GoogleCloud, назовем его Cloud-A. (Мы не будем владеть этой стороной в производственной среде; этим проектом и облаком будет управлять ИТ-отдел наших клиентов.)
Далее мы следовали этому другому руководству https://developers.google.com/gmail/api/guides/push Мы создали Pub / Sub topi c в нашем GoogleCloud (Cloud-B), нам принадлежит эта часть, и это topi c, где мы хотим подписаться для прослушивания сообщений / уведомлений. (Этот topi c находится в учетной записи, отличной от GMail-API, которая будет публиковать сообщения в Cloud-A). Итак, следуя этому последнему руководству, в нем говорится, что нам нужно дать разрешения для gmail-api-push@system.gserviceaccount.com, и, насколько я понимаю, это означает, что я даю привилегии GMail-API из Cloud-B для публикации sh сообщений в Pub / Sub Cloud-B.
То, что я не могу найти, - это способ дать разрешения для Gmail-API из Cloud-A на публикацию sh сообщений в Pub / Sub Cloud-B.
В заключение хочу прослушать Pub / Sub в Cloud-B, который будет получать уведомления от Gmail-API в Cloud-A.
Мы использовали это https://github.com/googleapis/google-api-ruby-client/blob/master/generated/google/apis/gmail_v1/service.rb#L144 и Я получаю сообщение об ошибке, в котором говорится, что topi c не существует (возможно, потому что он находится в Cloud-B, и я настраиваю Cloud-A Gmail-Api)
Надеюсь, я достаточно ясно мы не надеемся предоставить другому проекту внутри того же Google Cloud доступа к Pub / Sub, мы даже не написали эту услугу, поскольку это Gmail-Api, и единственное, что нам разрешено делать, - это отправить его c имя, которое мы хотим опубликовать sh in.