我完全按照这里提供的步骤https://cloud.google.com/pubsub/docs/emulator,它在使用模拟器步骤的步骤4上给了我以下错误。
所以当我尝试使用谷歌python库创建一个主题时,我得到:
File "string", line 3, in raise_from
google.api_core.exceptions.PermissionDenied: 403 User not authorized to perform this action.
status = StatusCode.PERMISSION_DENIED
details = "User not authorized to perform this action."
debug_error_string = "{"created":"@1614133564.919217000","description":"Error received from peer ipv6:[2607:f8b0:4005:807::200a]:443","file":"src/core/lib/surface/call.cc","file_line":1068,"grpc_message":"User not authorized to perform this action.","grpc_status":7}"
如果我试图使用本地pubsub模拟器,为什么我会得到这样的错误?
这应该可以解决:
export PUBSUB_EMULATOR_HOST=localhost:8085
由于某些原因,google教程(gcloud beta emulators pubsub env-init
)中的命令没有设置环境变量。所以你的公共订阅api调用服务帐户而不是本地模拟器,这会导致权限错误。
手动设置并验证使用echo $PUBSUB_EMULATOR_HOST
设置
看起来这些命令不是针对模拟器运行的,而是针对实际服务运行的。说明说要在设置模拟器环境变量的机器上运行这些步骤。您是否遵循了在它所链接的文档中设置环境变量的步骤?
首先需要运行的命令顺序是:
$ gcloud beta emulators pubsub start --project=my-test-project
$ (gcloud beta emulators pubsub env-init)
这将启动模拟器,然后设置环境变量PUBSUB_EMULATOR_HOST
。