来自AppEngine的Google Cloud PubSub:突然未经授权(错误401)

时间:2016-08-15 19:31:14

标签: google-app-engine go google-cloud-pubsub

我不能确切地说,因为我们遇到这个问题,因为我们的项目仍在开发中,我们只是定期部署来测试。

在我们最近的测试中,PubSub身份验证似乎不再起作用了。订阅主题时,日志中会出现以下错误:

21:10:29.577 Error subscribing to '123456'-topic: googleapi: Error 401: The request does not have valid authentication credentials., unauthorized

此错误为。之前工作得很好。我们无法追溯到我们的任何代码更改。

使用PubSub-Emulator,此错误在devappserver 上也没有出现

订阅者与PubSub-Service位于同一个项目中。再一次,这里的一切都发生在一个项目中。

以下是对我们正在做的事情的一些见解:

client, err := pubsub.NewClient(ctx, "lol123", option.WithTokenSource(google.AppEngineTokenSource(ctx, pubsub.ScopePubSub)), option.WithHTTPClient(urlfetch.Client(ctx)))
[...] more code [...]
_, err := client.NewSubscription(ctx, subname, topic, 0, &pubsub.PushConfig{
        Endpoint: endpoint,
    })

非常标准的东西。

以下是我们尝试使用的内容:

添加第二个范围:

option.WithTokenSource(google.AppEngineTokenSource(ctx, pubsub.ScopePubSub, pubsub.ScopeCloudPlatform)

使用默认的tokensource:

tokenSource, _ := google.DefaultTokenSource(ctx, pubsub.ScopePubSub)
option.WithTokenSource(tokenSource)

添加端点,以防以某种方式使用https://experimental.pubsub.googleapis.com/

option.WithEndpoint("https://pubsub.googleapis.com/")

此外,我们从之前的cloud.WithTokenSource(...) - 东西切换到新的选项.WithTokenSource(...) - 库。迁移到新的Cloud-Libraries运行良好。但是,他们没有帮助解决权限问题。

我们还使用了各种可以想象的服务帐户和权限组合。例如,默认的Appengine服务帐户已被添加为所有PubSub-Topics的所有者。请记住,这个错误是新的,它之前有效,我们无法追溯到我们的更改。

有什么想法和建议吗?我们现在会尝试很多东西。 ; - )

0 个答案:

没有答案