cloud run - 403用户未被授权执行此操作(PUB/SUB)



我有一个服务帐户附加到我的云运行,它可以访问秘密和api密钥等服务。

我最近添加了一个新的角色,如pub sub publisher和get topics和list topics到我的服务帐户。当我使用服务帐户的密钥文件时,我可以从本地发送数据到pub子主题。

但是当我在云运行中部署应用程序时,它做同样的工作,向pub sub发送消息,应用程序失败,出现以下错误

Traceback(最近一次调用):File "/usr/local/lib/python3.10/site-packages/google/cloud/pubsub_v1/publisher/_batch/thread.py",第274行,在_commit response = self._client。_gapic_publish(File "/usr/local/lib/python3.10/site-packages/google/cloud/pubsub_v1/publisher/client.py",第267行,在_gapic_publish返回super()。publish(*args, **kwargs) File "/usr/local/lib/python3.10/site-packages/google/pubsub_v1/services/publisher/client.py", 794行,在publish response = rpc(File "/usr/local/lib/python3.10/site-packages/google/api_core/gapic_v1/method.py", 113行,在callreturn wrapped_func(*args, **kwargs) File "/usr/local/lib/python3.10/site-packages/google/api_core/retry.py",第349行,在retry_wrapped_func返回retry_target(File "/usr/local/lib/python3.10/site-packages/google/api_core/retry.py",第191行,在retry_target返回target() File "/usr/local/lib/python3.10/site-packages/google/api_core/timeout.py",第120行,在func_with_timeout返回func(*args,**kwargs)文件"/usr/local/lib/python3.10/site-packages/google/api_core/grpc_helpers.py",第67行,在error_remapped_callableyour textraise exceptions.from_grpc_error(exc) from exc google.api_core.exceptions。PermissionDenied: 403用户未被授权执行此操作。

以下部分是我在本地和云运行应用程序

中使用的相同代码
from google.cloud.pubsub_v1 import PublisherClient
data = {"a" : 'apple',"b" : 700}
final_data = json.dumps(data).encode("utf-8")
publisher_client = PublisherClient()
topic_path = publisher_client.topic_path(project-id,topic-name)
future = publisher_client.publish(topic_path, final_data)

可以在主题的gcp控制台中看到继承的权限。有趣的是,云运行是在底层环境中运行的。但是在具有相同访问权限的不同环境中,云运行失败了。两个环境都有自己的服务帐户,具有完全相同的访问权限。

我犯了一个非常愚蠢的错误,当单独阅读pub sub的配置文件时,我正在阅读dev文件(我错过了加载环境变量,所以默认情况下它选择dev)。所以我试图访问一个不同的项目pub子,这就是我得到403用户没有访问错误的原因。

最新更新