Google Cloud Pub / Sub Pull PERMISSION_DENIED

时间:2018-01-26 14:55:23

标签: google-app-engine google-cloud-messaging google-cloud-platform google-cloud-pubsub

我在本地计算机上安装了Google Cloud SDK,当我运行命令时:

gcloud beta pubsub subscriptions pull --auto-ack MY_SUBSCRIPTION_NAME

它工作正常,我可以看到消息。

但是,如果我在我创建的GCE VM中执行相同操作,则会收到以下错误:

ERROR: (gcloud.beta.pubsub.subscriptions.pull) PERMISSION_DENIED: User not authorized to perform this action.

我已经尝试过几件事,比如:

  • 停止实例并添加服务帐户;

  • 制作我的实例"允许完全访问所有Cloud API";

  • 执行sudo yum update google-cloud-sdk

我不知道还有什么可以让它发挥作用。有任何想法吗?请在这里告诉我。

1 个答案:

答案 0 :(得分:2)

您应该转到Cloud console subscriptions page并确保您的服务帐户拥有"发布/订阅订阅者"订阅许可。当您在订阅页面上时,可以单击订阅旁边的复选框,然后屏幕右侧将显示以下内容:

Permission Section

确保您的服务帐户位于带圆圈的部分,如果不是,请添加。为此,请在"添加成员"下输入服务帐户;并在"选择一个角色"下拉菜单,选择" Pub / Sub Subscriber"然后单击"添加"按钮。请注意,要添加服务帐户,您需要使用具有Pub/Sub access control rules所有者或发布/订阅管理员的帐户登录云控制台。

这与选择"允许对所有Cloud API的完全访问权限不同。"该功能表明GCE实例可以访问哪些API;它不会影响服务帐户的身份验证,以通过这些API访问所需的资源(例如,订阅)。

这可能是通过gcloud命令行工具实现的,因为您使用了用于创建订阅的Google帐户进行了身份验证。