无法使用服务帐户订阅 google pub 子主题
Posted
技术标签:
【中文标题】无法使用服务帐户订阅 google pub 子主题【英文标题】:Unable to subscribe to a google pub sub topic using a service account 【发布时间】:2018-10-15 15:19:21 【问题描述】:我试图理解此链接中的谷歌云示例中给出的示例
IAM Example
此示例创建一个服务帐号、一个虚拟机和一个 Pub/Sub 主题。虚拟机作为服务帐号运行,服务帐号拥有对 Pub/Sub 主题的订阅者访问权限,从而使运行在虚拟机上的服务和应用程序能够访问 Pub/Sub 主题。
但是,当我尝试部署此示例时,我遇到了错误
The fingerprint of the deployment is a-v3HjAHciZeSLuE-vSeZw==
Waiting for create [operation-1525502430976-56b6fb6809800-dbd09909-c5d681b2]...failed.
ERROR: (gcloud.deployment-manager.deployments.create) Error in Operation [operation-1525502430976-56b6fb6809800-dbd09909-c5d681b2]: errors:
- code: RESOURCE_ERROR
location: /deployments/test-dp/resources/my-pubsub-topic
message: '"ResourceType":"pubsub.v1.topic","ResourceErrorCode":"403","ResourceErrorMessage":"code":403,"message":"User
not authorized to perform this action.","status":"PERMISSION_DENIED","details":[],"statusMessage":"Forbidden","requestPath":"https://pubsub.googleapis.com/v1/projects/fresh-deck-194307/topics/my-pubsub-topic:setIamPolicy","httpMethod":"POST"'
它提到用户无权执行此操作。 我无法理解它提到的是哪个用户。 由于我是项目所有者并且我的帐户是项目的所有者,我应该能够部署一个脚本,该脚本可以设置 IAM 策略以订阅 pubsub 主题。
上面可能是我的理解有误。有人可以帮助理解为什么这个例子失败了吗?
另外我希望如果运行这个例子需要任何额外的配置,应该在 README 文件中提到。但是没有说明。
【问题讨论】:
哪个用户或服务帐户正在通过 DM 部署,该用户/帐户是否具有“setIamPolicy”权限? @PatrickW 用户是项目所有者,部署管理器正在从云 shell 执行。 我正在做同样的事情并得到同样的错误。在“pubsub_topic.jinja”文件中设置 IAM 策略似乎是一个问题。这可能是 API 的问题,当我尝试使用 IAM API 通过 REST 设置 IAM 策略时,我收到了类似的奇怪错误消息。 我今晚再次尝试部署它,现在我不再收到 403 错误。这可能是一个暂时的问题。无论哪种方式,部署现在都可以正常工作 【参考方案1】: 确保您尝试部署的所有资源的 API 均已启用。 使用gcloud auth list
命令确保具有足够权限的帐户是活动帐户。
使用gcloud config list
命令确保默认项目或其他设置正确。
【讨论】:
是的,所有事情都经过检查并且有效。还是不行。 我已经测试了我的部署。它对我有用。如果它仍然对您不起作用,则必须对其进行调查。我建议您在Public Issue Tracker 中创建一个新问题。以上是关于无法使用服务帐户订阅 google pub 子主题的主要内容,如果未能解决你的问题,请参考以下文章
将来自不同项目的服务帐户分配给 Pub/Sub 上的推送订阅
Google Pub/Sub - 多个订阅同一主题以通过 REST API 减少负载?
确保在第一个订阅者完成拉入 Google pub-sub 主题后触发第二个订阅者